Инициализация массива C ++ - PullRequest
0 голосов
/ 25 июня 2009

Почему я не могу инициализировать локальный массив строкой

Ответы [ 3 ]

7 голосов
/ 25 июня 2009

Почему я не могу инициализировать локальный массив строкой

Правильный ответ: вы можете - для заданного определения массива и строки. Чего именно вы хотите достичь?

char str[] = "Hello world";
4 голосов
/ 25 июня 2009

Вопрос очень тонкий по деталям, но:

char arr[] = {'a','b','c', 0};

или

char arr[] = "string";

EDIT

В ответ на вопросы:

char s1[] = "hi";
char s2[] = {'h','i',0};
memcpy(s1, "by", sizeof(s1));
memcpy(s2, "by", sizeof(s2));
cout << ios::hex << &s1 << endl;
cout << ios::hex << &s2 << endl;
cout << s1 << endl;
cout << s2 << endl;

Печать:

80xbfffed72
80xbfffed6f
by
by

По крайней мере, в моей системе это выглядит так, как будто они расположены в одном и том же пространстве памяти, я не вижу никаких проблем или различий. Например, C определяет string как массив символов с нулевым символом в конце - я считаю, что это то же самое в C ++, не путать с std::string.

1 голос
/ 25 июня 2009
std::vector<std::string> abc(5,"abc");

создаст вектор с 5 элементами, инициализированными в "abc".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...