C ++ inicializace pole

hlasů
-4

Proč nemohu inicializovat místní pole s řetězec

Položena 25/06/2009 v 08:21
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
7

Proč nemohu inicializovat místní pole s řetězec

Správná odpověď je, že můžete - pro danou definici pole a řetězec. Co přesně chcete dosáhnout?

char str[] = "Hello world";
Odpovězeno 25/06/2009 v 08:27
zdroj uživatelem

hlasů
4

Tato otázka je velmi hubená na detaily, ale:

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

nebo

char arr[] = "string";

EDIT :

V odpovědi na otázky:

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;

tiskne:

80xbfffed72
80xbfffed6f
by
by

Alespoň v mém systému, vypadá to, že oba jsou přidělovány ve stejném paměťovém prostoru, nevidím žádné problémy nebo rozdíly. C například definuje stringjako null ukončena char pole - Domnívám se, že je stejná v C ++, nelze zaměňovat s std::string.

Odpovězeno 25/06/2009 v 08:28
zdroj uživatelem

hlasů
1
std::vector<std::string> abc(5,"abc");

vytvoří vektor s 5 prvky nastaveny na „ABC“.

Odpovězeno 25/06/2009 v 08:33
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more