В следующем коде:Почему оператор Dimof на std :: string дает неожиданный результат?
#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;
}
Длина строки в buffAsStdStr составляет 6, но значение по SizeOf шоу 28, когда я бегу в Visual Studio 2012 и 32 в ideone. Ожидаемый размер 7, включая конечный символ NULL.
В чем причина этого неожиданного результата оператора sizeof? Почему результат меняется в визуальной студии и идеоне?
Причина в том, что ваши ожидания были неправильными :) – StoryTeller
Вопрос имеет смысл, особенно для тех, кто начинает изучать C++. –
@ Mr.C64 да Я новичок. Теперь понятно и кристально понятно. Всем спасибо! –