gpt4 book ai didi

C++ 字符串流连接查询

转载 作者:太空狗 更新时间:2023-10-29 23:36:46 25 4
gpt4 key购买 nike

代码应该将 argv[1] 与 .txt 和 _r.txt 连接起来。

std::stringstream sstm;
std::stringstream sstm_r;

sstm<<argv[1]<<".txt";
sstm_r<<argv[1]<<"_r.txt";

const char* result = sstm.str().c_str();
const char* result_r = sstm_r.str().c_str();

fs.open(result);
fs_r.open(result_r);

cout<<result<<endl;
cout<<result_r<<endl;

但它的作用是,当我输入“abc”作为 argv[1] 时,它给我结果为“abc_r.tx0”,result_r 也相同“abc_r.tx0”。正确的方法是什么,为什么这是错误的。

最佳答案

c_str() 返回的指针关联的 std::string 实例将被销毁,留下 result result_r 作为悬空指针,导致未定义的行为。如果要使用 c_str(),则需要保存 std::string 实例:

const std::string result(sstm.str());

fs.open(result.c_str()); /* If this is an fstream from C++11 you
can pass a 'std::string' instead of a
'const char*'. */

关于C++ 字符串流连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12388882/

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