BetrachtenWarum in der Mitte des std String null Einstellung hat keine Wirkung
#include <string>
#include <iostream>
int main()
{
/*
hello
5
hel
3
*/
char a[] = "hello";
std::cout << a << std::endl;
std::cout << strlen(a) << std::endl;
a[3] = 0;
std::cout << a << std::endl;
std::cout << strlen(a) << std::endl;
/*
hello
5
hel o
5
*/
std::string b = "hello";
std::cout << b << std::endl;
std::cout << b.length() << std::endl;
b[3] = 0;
std::cout << b << std::endl;
std::cout << b.length() << std::endl;
getchar();
}
Ich erwarte, dass std::string
einen identisch char
Array verhalten wird. Das ist es, fügen Sie Null Zeichen in der Mitte der Zeichenfolge ein, wird die Zeichenfolge "terminieren". Dies ist jedoch nicht der Fall. Ist meine Erwartung falsch?
Können wir nicht endlich auf die Theorie verzichten, dass irgendjemand jemals 'string' mit nicht-zusammenhängendem Speicher implementieren wird? C++ 0x bringt es in Einklang mit 'vector'. –
Mit diesem Kommentar könnten Sie jemanden dazu bringen, es tatsächlich zu tun. – foo