c++ - 为什么此c++代码打印出长度为5,而当我打印出字符串时,程序会自动终止?

标签 c++ string

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/

相关文章:

C++ STD find_last_of 不工作?

SWIG 类型映射中的 C++ 异常

c++ - 类定义不正确。需要标识符

用 R 中的相应替换字符串替换一组模式匹配

Java新手: infinite loop searching for specific text in a file

python - 解析表示元组列表的字符串

c++ - 如何安全地从DLL调用返回对象

c++ - 重载运算符以与 C++ 中的另一个类一起使用

c++ - 如何在c中为函数指定别名

Python 字符串末尾有空格和没有空格且不可变