将文件作为命令行c ++的输入

时间:2015-03-11 23:43:48

标签: c++ file-io stdin

目前我的代码使用cin来获取程序执行时用作输入的文件名。我想拥有它,以便当我运行程序时,我可以添加文件重定向和文件名并按原样运行: ./ a.out< file.txt的即可。如何使用重定向将文件提供给我的代码。

这是我目前如何接受输入的一个例子:



int main(){
  
    std::string filename;
	std::cin >> filename;
	std::ifstream f(filename.c_str());
  
 }




1 个答案:

答案 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)。

最好接受您的文件名作为正常的命令行参数,并在程序中打开它。