FAQ:ANSI CPP:присвоение строки

Материал из Весельчак У
Версия от 21:56, 28 июля 2008; RXL (обсуждение | вклад) (Ветвление FAQ:ANSI CPP)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Почему не получается присвоить строку?

Например я пишу:


	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++).