代码应该将 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/