FAQ:ANSI CPP:присвоение строки — различия между версиями
Материал из Весельчак У
RXL (обсуждение | вклад) м (→Почему не получается присвоить строку?) |
RXL (обсуждение | вклад) м |
||
Строка 25: | Строка 25: | ||
<syntaxhighlight lang="cpp"> | <syntaxhighlight lang="cpp"> | ||
char mess[100]; | char mess[100]; | ||
− | mess[0]=0;//инициализация | + | mess[0] = 0;//инициализация |
strcpy(mess, "мой текст"); | strcpy(mess, "мой текст"); |
Текущая версия на 00:55, 30 июля 2008
Почему не получается присвоить строку?
Например я пишу:
char mess[] = ""; mess = "мой текст"; // задаю значение строки MessageBox(hwnd, mess, "Error Message", MB_OK);
Ответ: Массив mess объявлен как
char mess[] = "";
то есть всё равно что
char mess[1] = '\0';
Размер массива равен единице, первый элемент равен 0.
Чтобы присвоить строку, нужно увеличить размер массива (см. пример) и использовать strcpy для копирования содержимого "мой текст" в mess:
char mess[100]; mess[0] = 0;//инициализация strcpy(mess, "мой текст");
Либо использовать std::string (стандартный класс работы со строками в C++).