我试图将cin重定向到visual studios 2015中的一个文件,但每次它运行std::cin.rdbuf(in.rdbuf())
行时,程序都会崩溃
我正在Windows 10上写C++ 14。下面是完整的代码。
std::cout << "Filename: " << filename << endl;
try {
std:ifstream in(filename);
if (in.rdbuf() == nullptr) cout << "FAILED!!!!" << endl;
std::cin.rdbuf(in.rdbuf());
return true;
}catch (exception& e){
std::cout << "error: " << e.what() << std::endl;
return false;
}
catch (...) {
cerr << "UNKNOWN Exception in parsing file in stream";
return 2;
}
1条答案
按热度按时间vatpfxk51#
6年后,我遇到了一个类似的问题,我试图将标准输出(在我的例子中是
cerr
,但是cout
和clog
的工作原理是一样的)重定向到一个文件,这个问题运行得很好,* 但是 * 导致我的程序在到达main()结尾时崩溃,并出现segfault。我必须在退出main()之前恢复标准输出来解决这个问题,下面是我的代码:
请注意,
std::cerr.rdbuf()
在调用之前返回指向流缓冲区的指针,因此返回oldbuf = std::cerr.rdbuf(err.rdbuf());
行。我希望这对某人有用:)