|
|
|
| Скажите почему сия программа выводит no?
#include <iostream>
using namespace std;
void main()
{
char * str = new char[1];
str[0] = '\0';
if(str == "\0")
cout << "yes\n";
else
cout << "no\n";
}
|
| |
|
|
|
|
|
|
|
для: Евгений Петров
(06.05.2006 в 16:16)
| | потому что адреса динамически распределенного new char[1] и константной строки "\0" - разные. | |
|
|
|
|
|
|
|
для: Trianon
(06.05.2006 в 16:21)
| | А чему тогда в моем случае равна строка str?
Дописал:
Т.е. в этой строке:
сравниваются не строки а адреса? | |
|
|
|
|
|
|
|
для: Евгений Петров
(06.05.2006 в 16:37)
| | char * - это не строка. Формально, это указатель на символ. | |
|
|
|
|
|
|
|
для: Trianon
(06.05.2006 в 16:56)
| | Хм, понятно, но тогда приведу конкретный пример:
#include <iostream>
using namespace std;
void main()
{
char * str = "string";
char * buffer = "";
for(int i = 0; i < 6; i++)
{
// ... buffer += str[i];
}
}
|
Вот в том цикле мне надо прибавит к buffer один символ из str. Как это можно сделать? | |
|
|
|
|
|
|
|
для: Евгений Петров
(06.05.2006 в 17:11)
| | У вас под buffer память не выделена - перепашите соседнюю область памяти и программа может рухнуть... лучше установите указатель buffer на str и отсеките \0 то, что вам не требуется, в результате даже цикл не понадобится.
#include <iostream>
using namespace std;
void main()
{
char * str = "string";
char * buffer;
buffer = str
buffer[6] = '\0';
}
|
А лучше расскажите, что хотите сделать? | |
|
|
|
|
|
|
|
для: cheops
(06.05.2006 в 20:24)
| | Нет в том то и дело, что мне надо в цикле прибавлять по одному символу. Просто данные хранятся в текстовом файле в таком виде:
Т.е. могут быть отделены либо пробелом (причем не одним) либо табом... Мне надо занести в список (List<char *, char *>) все эти элемены | |
|
|
|
|
|
|
|
для: Евгений Петров
(06.05.2006 в 21:13)
| | Список сами реализовывали или воспользовались STL? | |
|
|
|
|
|
|
|
для: cheops
(06.05.2006 в 21:46)
| | Нет не сам. Стандартный класс MFC - CList | |
|
|
|