无法连续读取两个不同的文件

时间:2014-09-11 20:18:51

标签: c++

我正在编写一个程序,可以执行3个命令,command1,command2和bye。前两个命令应该读取文件并对这些文件中的数据执行某些操作。

现在的问题是......它不会连续使用2个不同的文件。例如..

command1 testing.txt
... THIS WORKS ...
command1 testingagain.txt
wrong command! try again!

我希望每次使用任何文件名输入命令时都可以使用命令。我不确定如何更改代码的结构以实现这一点。

while (getline(cin, str1)){

        if (str1 == "bye")
        {
            return 0;

        } else {
            s1.str (str1);
            s1 >> command;
            s1 >> filename;
            ifs.open(filename.c_str()); 

            if (ifs.fail()) {                                                       
                cerr << "ERROR: Failed to open file " << filename << endl;   
                ifs.clear();   

            } else { 

                if (str1 == "command1 " + filename) {
                    command1(filename);

                } else if (str1 == "command2 " + filename) {
                    command2(filename);                                                              

                }   else {
                    cout << "Wrong command! try again!" << endl;

                } 
            }
            ifs.close();
        }
    }
    return 0;

1 个答案:

答案 0 :(得分:1)

s1.str (str1);没有按预期工作。您应该每次都创建新的istringstream对象:

istringstream s1(str);
s1 >> command;
s1 >> filename;

或在clear()之后添加str()

s1.str(str);
s1.clear();
s1 >> command;
s1 >> filename;