char start = 'a';
string out=""+start;
cout<<out.length()<<endl;
首先我们在开始变量中使用一个字符,然后我们使用make字符串并使用开始变量进行初始化并打印出来?
最佳答案
string out = "" + start;
这种加法操作并没有按照您的想法做,
'a'
根据其ASCI值被强制转换为int
,您将指针移动了那么多元素,然后从const char*
中构造了字符串,重新传递,导致UB,因为它指向您尝试读取的某个无效的内存位置。
关于c++ - 为什么此c++代码打印出长度为5,而当我打印出字符串时,程序会自动终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60335762/