Im folgenden Code:Warum führt der Sizeof-Operator in einer std :: string zu einem unerwarteten Ergebnis?
#include <iostream>
#include <string>
using namespace std;
int main() {
char buff[100];
_snprintf(buff, sizeof(buff), "%s %d", "Name",2); //snprintf incase of ideone
string buffAsStdStr = buff;
cout<<buffAsStdStr<<endl;
cout<<"len: "<<buffAsStdStr.length()<<endl;
cout<<sizeof(buffAsStdStr)<<endl;
return 0;
}
Die Länge der Zeichenfolge in buffAsStdStr 6, aber der Wert die sizeof Show ist 28, wenn ich in Visual Studio 2012 und 32 in ideone laufen. Die erwartete Größe ist 7 rechts einschließlich des abschließenden NULL-Zeichens.
Was ist der Grund für dieses unerwartete Ergebnis von sizeof operator? Warum ändert sich das Ergebnis zwischen Visual Studio und Ideone?
Der Grund ist, dass Ihre Erwartungen falsch waren :) – StoryTeller
Die Frage macht Sinn, besonders für jemanden, der C++ lernt. –
@ Mr.C64 ja ich bin ein Anfänger. Jetzt verstanden und kristallklar. Danke euch allen! –