目前我的代码使用cin来获取程序执行时用作输入的文件名。我想拥有它,以便当我运行程序时,我可以添加文件重定向和文件名并按原样运行: ./ a.out< file.txt的即可。如何使用重定向将文件提供给我的代码。
这是我目前如何接受输入的一个例子:
int main(){
std::string filename;
std::cin >> filename;
std::ifstream f(filename.c_str());
}

答案 0 :(得分:0)
这样做
#include <iostream>
#include <fstream>
#include <string>
int main()
{
std::string line;
std::cout << "received " << std::endl;
while(std::getline(std::cin, line))
{
std::cout << line << std::endl;
}
std::cout << "on stdin" << std::endl;
}
您不需要自己打开文件,因为在stdin
上由于在命令行上使用<
而将文件内容传递给您。
此代码有一个缺点,即如果您未在stdin
上输入任何内容,则会冻结。检测到stdin
为空只能以不可移植的方式实现(请参阅here)。
最好接受您的文件名作为正常的命令行参数,并在程序中打开它。