FAQ:ANSI CPP:присвоение строки — различия между версиями

Материал из Весельчак У
Перейти к: навигация, поиск
м (Почему не получается присвоить строку?)
м
 
Строка 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++).