Pozwólcie mi pokazać wam mój pierwszy kod:Dlaczego zwracam nieznaną wartość, gdy dodałem znak do pustego łańcucha (jako "" + c)?
void testStringAdd(){
char c = '$';
string str = "";
str += c;//the same as `str = str + c;`
cout << str << "---";
cout << "size : " << str.size() << endl;
str = "" + c;//the same as `str = c + ""`;
cout << str << "---";
cout << "size : "<< str.size() << endl;
}
Spodziewałem wyjście jest:
$ --- rozmiar: 1
$ --- rozmiar: 1
Ale rzeczywistą wydajnością w stosunku do vs2013 jest:
$ --- rozmiar: 1
--- rozmiar: 0
Jest to ciekawe zjawisko, a ja zastanawiam się, dlaczego tak dziwnie?
uwaga: jeśli kod string str = "";
, wtedy str == ""
zwróci true.
Jest rzeczywiście ostrzeżenie wydane na ten temat: [_'main.cpp: 12: 8: ostrzeżenie: Offset poza granice stałej string'_] (http://coliru.stacked-crooked.com/a/5180c0f835abc759). –