如何让a.out文件通过输入“a.out< textfilename.txt”

时间:2015-05-11 00:57:23

标签: c++ command-line-arguments

我是编程新手,我找不到问题的答案。

这是我必须打开程序并在终端上运行它时读取我想要的文本文件的代码:

using namespace std;

int main(int argc, string *argv[])
{

    string fileName;
    getline(cin, fileName);
    ifstream infile(fileName.c_str());


    int total[26] = {0};


    if (!infile)
    {
        cout << "Error opening file" << endl;
        return 0;
    }

    char b;
    while (infile.get(b))         
    {
        if (isalpha(b))     
        {
            b = toupper(b);   



            int index = b - 'A';  

            total[index]++;      
        }
    }

我可以运行程序并输入我想通过终端打开的文件,但我的教师程序可以通过在终端中输入以下内容来打开文件:

  

a.out&lt;的text.txt

当我使用getline而不是使用fstream时,它会读取文件而不是整个文件(直到它达到EOF)。我不确定我是怎么编写这个代码的。 (作业已提交,仅供我自己参考)

1 个答案:

答案 0 :(得分:1)

当有人使用<字符进行重定向时,该文件变为标准输入。因此cin将包含text.txt的内容。由于cin是istream,你可以这样做:

while (cin.get(b)) {
   // what you've got now...
}