Witam. Mam problem z zapisaniem tekstu (typu string) do tablicy znaków. Próbowałem czegoś takiego:
string a;
char b[2];
a[0]=b[0];
Ale nie działa. Prosiłbym o pomoc.
Witam. Mam problem z zapisaniem tekstu (typu string) do tablicy znaków. Próbowałem czegoś takiego:
string a;
char b[2];
a[0]=b[0];
Ale nie działa. Prosiłbym o pomoc.
Tekstem piszesz string
do char[]
w kodzie na odwrót, o co ci chodzi?
char tb[]="Ala ma kota";
string str;
str=tb;
char *chr=str.c_str();
chr[0]='a';
Mam problem z zapisaniem tekstu (typu string) do tablicy znaków.
Może wyjaśnij dlaczego chcesz to zrobić - zresztą twój przykład pokazuje próbę czegoś odwrotnego..
Na string
u można wykonać każdą operację jaką można wykonać na char*
, a jeśli musisz przekazać parametr do funkcji która przyjmuje typ char*
, to zrób to tak:
foobar(const char *s);
...
string s = "ala ma kota";
foobar(s.c_str());
_13th_Dragon napisał(a):
char *chr=str.c_str();
chr[0]='a';
Nie powinieneś tak robić.
Standard nie zakłada, że bufor w stringu jest ciągły.
(Btw. to się nie powinno skompilować ze względu na const)
Poprawny sposób na przepisanie stringa do tablicy znaków to
string str = "Ala ma kota";
char buffer[MAX_SIZE_OF_STRING];
copy(begin(str), end(str), buffer);
buffer[str.size()] = 0;
minusem jest to, że w takim rozwiązaniu musisz znać wcześniej maksymalny rozmiar stringa (ewentualnie możesz dynamicznie zaalokować tę pamięć)