我正在编写一个程序,可以执行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;
答案 0 :(得分:1)
s1.str (str1);
没有按预期工作。您应该每次都创建新的istringstream
对象:
istringstream s1(str);
s1 >> command;
s1 >> filename;
或在clear()
之后添加str()
:
s1.str(str);
s1.clear();
s1 >> command;
s1 >> filename;