在我的一个项目中,我用 const char 初始化了一个 const std::string& (在编译时知道),打印的结果令人惊讶。
我在 Ubuntu 12.04x32 上使用 gcc 版本 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
示例:
#include <string>
#include <iostream>
using namespace std;
class A
{
public:
A() : str("test"){};
const string& str;
};
int main(int argc,char* argv[])
{
A a;
cout<<a.str<<endl;
return 0;
};
所以,正常情况下,它会显示“测试”,但是,这是我输出的一部分:
testP�����utf8)����lower_case_table_names�xW�xW� �� ����127.0.0.1utf8W�Y127.0.0.1 via TCP/IP127.0.0.1
�5.5.31-0ubuntu0.12.04.1rootW�rootW�1����metadata_use_info_schema!P�XP�� VARaءpW�P4:����SHOW SESSION VARIABLES LIKE 'lower_case_table_names'`(���TCP/IP (3)@!K!K!�
.....
<charset name="gb2312">
<family>Simplified Chinese</family>
<description>GB2312 Simplified Chinese</description>
<alias>chinese</alias>
<alias>iso-ir-58</alias>
<collation name="gb2312_chinese_ci" id="24" order="Chinese">
<flag>primary</flag>
<flag>compiled</flag>
</collation>
<collation name="gb2312_bin" id="86">
<flag>binary</flag>
<flag>compiled</flag>
</collation>
</charset>
输出连续 1000 行。
所以我的问题很简单:为什么?(我尝试在“测试”的末尾添加一个 \0,但没有改变)