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