gpt4 book ai didi

c++ - 文字符号和字符串变量之间的连接然后返回 const char*

转载 作者:行者123 更新时间:2023-11-28 04:50:29 27 4
gpt4 key购买 nike

我想将文字符号“~”与字符串变量连接起来。

string dbFile = "data.db";
const char *temporaryFileName = ("~" + dbFile).c_str(); // it must be ~data.db
cout << temporaryFileName << endl;

没有错误,但是打印的时候什么也没有出来,为什么?

最佳答案

查看您使用的运算符的返回类型:

string operator+(const char* lhs, string& rhs); // untempletized for simplicity

请特别注意,它返回一个新对象。因此,表达式 ("~"+ dbFile) 返回一个新的临时对象。临时对象只存在到完整的表达式语句(除非被引用绑定(bind))。在这种情况下,语句在同一行的分号处结束。

仅当指向的 string 对象仍然存在时,才允许使用 c_str() 返回的指针。您在字符串不再存在的下一行使用指针。行为未定义。

解决方案:要么修改原始字符串,要么创建一个新的字符串对象。确保字符串对象至少在使用字符指针时存在。示例:

string dbFile = "data.db";
auto temporaryFileName = "~" + dbFile;
cout << temporaryFileName.c_str() << endl;

关于c++ - 文字符号和字符串变量之间的连接然后返回 const char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48321105/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com