LINUX.ORG.RU

Re: Массив строк

Уточни, пожалуйста, чтобы не писать впустую:
1) Постоянная ли длина массива?
2) Если постоянная, то какие строки - просто константы или ты хочешь иметь возможность их менять?
3) С или С++? (или что-то ещё?)
Могу, конечно, написать все варианты, но не хочется время тратить на то, что никому не нужно...

justme ()
Ответ на: Re: Массив строк от justme

Re: Re: Массив строк

Длинна массива постоянная, строки я хочу менять. Если не сложно - С и С++.

anonymous ()

Re: Массив строк

На C - char* strings[STRINGS_COUNT] - создаёшь массив указателей на строки. Потом его заполняешь - или указателями, полученными откуда нибудь, или сам делаешь что-нибудь вроде

for (i = 0; i < STRINGS_COUNT; i++)
{
strings[i] = malloc (7);
strcpy (strings[i], "Привет");
}

После этого strings[1][2] - это 2-я строка, 3-й символ. Если тебе нужно изменить какую-нибудь строку так, что увеличится её длина, то прийдётся выделить место для новой строки malloc'ом, записать в неё всё что нужно, освободить старую строку с помощью free, а потом переписать указатель в массиве.

На С++ всё, естественно, проще - делаешь std::string strings[STRINGS_COUNT] и всё. Здесь опять strings[1][2] - это 2-я строка, 3-й символ. Строки можешь менять как хочешь, и не надо мучаться с выделением/освобождением памяти - string всё делает сам.

Уфф, дописал. Вопросы есть? ;-)

justme ()
Ответ на: Re: Массив строк от justme

Re: Re: Массив строк

Большое спасибо, вопросы есть. Как можно перевести std::string в char

anonymous ()

Re: Массив строк

В const char* - метод c_str (). В char* может и можно как-то просто перевести, но делать этого лучше не надо - надёжнее выделить свой буфер и скопировать туда результат c_str ().

justme ()
Ответ на: Re: Массив строк от justme

Re: Re: Массив строк

Большое человеческое спасибо, вопросов больше пока нет. То есть есть, но он не на эту тему. Я сейчас пишу все в редакторе wedit (русский, удобный) , компилирю из командной строки, но мне бы хотелось какую-либо среду разработки под консоль, чтобы сама отступы делала, что надо - другим текстом выделяла, может посоветуешь что-нибудь.

anonymous ()

Re: нБУУЙЧ УФТПЛ

vim - otstupi i voobche udobno

anonymous ()
Ответ на: Re: Массив строк от justme

Re: Re: Массив строк

Компилятор пишет что нет функции c_str(). Что делать ? Может я что-то не так понял ?

anonymous ()

Re: Массив строк

Щас тебе народ посоветует vi или emacs и начнёт флейм сообщений на двадцать :-)
Я пользуюсь редактором mc (mcedit) в консоли и emacs'ом (обычным) в X. Хотя последнее время я под Линуксом не часто программирую.

justme ()

Re: Массив строк

c_str - это метод класса string - то есть берёшь переменную типа string, после неё пишешь точку, а потом c_str (), например
std::string s;
const char* c;
c = s.c_str ();

justme ()
Ответ на: Re: Массив строк от justme

Re: Re: Массив строк

Вот теперь все понятно и работает, огромное спасибо за терпение к моему незнанию, если можно еще один вопрос (я в указателях и всем этом пока не очень разбираюсь) что такое char* ?

anonymous ()

Re: Массив строк

Теоретически - тип char* это указатель на один байт - то есть, переменная размером в 4 байта (на 32-битных процессорах), значением которой является адрес, на котором этот байт расположен в памяти.
Практически - в C/C++ способ работы со строками такой, что если у тебя есть переменная char* stroka, то она обозначает строку, которая начинается с байта, на который указывает stroka и кончается первым байтом после этого с кодом 0.
Я надеюсь, что я это всё не запутал окончательно ;-) Пиши вопросы. Кстати, можем перейти на e-mail.

justme ()

Re: Массив строк

Пока что вопросов нет, но они скоро обязательно появятся (в этом уверен на 100%). Мой мэйл - timur-kar@mail.ru, очень бы хотелось узнать твой. Спасибо за все!

anonymous ()

Re: нБУУЙЧ УФТПЛ

Aga, tak eto ty mne poslal svoju programmu? :-) Togda ty moj email znaesh ;-) (Pishu iz links pod Linuxom, tak chto pardon za translit).

justme ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.