sizeof表示字符串矩阵

时间:2013-03-23 00:26:33

标签: c++ arrays matrix sizeof

评论公平地解释了这一切。帮助

   string aZOM[][2] = {{"MoraDoraKora", "PleaseWorkFFS"},{"This is a nother strang.", "Orly?"}};
cout << sizeof("MoraDoraKora") <<" \n";
//Obviously displayes the size of this string...
cout << sizeof(aZOM[0][0]) << " \n";
//here's the problem, it won't display the size of the actual string... erm, what?

string example = aZOM[0][0];
cout << example << " \n";
cout << aZOM[0][1] << " \n";
//Both functions display the string just fine, but the size of referencing the matrix is the hassle.

2 个答案:

答案 0 :(得分:4)

sizeof为您提供传递给它的对象的大小(以字节为单位)。如果您给它std::string,它会为您提供std::string对象本身的大小。现在该对象我为实际字符动态分配存储并包含指向它们的指针,但这不是对象本身的一部分。

要获得std::string的大小,请使用其size/length成员函数:

cout << aZOM[0][1].size() << " \n";

sizeof("MoraDoraKora")正常工作的原因是因为字符串文字"MoraDoraKora" 不是一个std::string对象。它的类型是“13个数组const char1”,因此sizeof以字节为单位报告该数组的大小。

答案 1 :(得分:2)

sizeof返回类型的大小,而不是指向的数据的大小。

字符串通常是指向char的指针,其中链中的最后一个char的值为0.

如果您想要字符串的实际大小,可以使用aZOM[0][0].length()