#include <iostream>
#include <string>
#include <cstring>
int main()
{
using namespace std;
string cppString = "string1";
//size of C++ String
cout << sizeof(cppString) << endl;
cout << cppString << endl;
//To list the corresponding ASCII code for C++ String
for (int index = 0; index < sizeof(cppString); ++index)
std::cout << static_cast<int>(cppString[index]) << " ";
char cString[] = "string2";
//size of C String
cout << "\n" << sizeof(cString) << endl;
cout << cString << endl;
//To list the corresponding ASCII code for C String
for (int index = 0; index < sizeof(cString); ++index)
std::cout << static_cast<int>(cString[index]) << " ";
}
Output:
24
string1
115 116 114 105 110 103 49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8
string2
115 116 114 105 110 103 50 0
我是编程新手。我已经尝试使用谷歌搜索答案,但可用的解释超出了我的理解范围。
我知道C String是在创建时伴随null终止符而C ++字符串不是。但是,当我测试C ++字符串和C字符串在内存中保存了哪些ASCII代码时,看起来C-String不仅具有空终止符(如预期的那样),而且C ++字符串最终也会以连续的空终止符结束。 ASCII码 49 。
在Gaddis的书中,它规定,所有程序的字符串文字都作为C字符串存储在内存中,并自动附加空终结符。
问题: