intまたは文字列「all」を受け取り、対応する出力を出力する単純な関数printNodeを作成しています。関数の int の側面はうまく機能しますが、呼び出すと
printNode all
関数は「エラー:無効な引数」を出力しますが、その理由がわかりません。
int main() {
...
getline(cin, line)
stringstream lineStream(line);
stringstream elineStream(line);
printNode(lineStream, elineStream);
...
}
int printNode(stringstream& lineStream, stringstream& elineStream) {
//String aspect of printNode
int nodeid;
string name;
// Parsing nodeid or name
lineStream >> nodeid;
// If parsing to nodeid fails, check if input is string "all"
if (lineStream.fail()) {
elineStream >> name;
if (elineStream.fail()) {
if (elineStream.eof()) {
cout << "Error: too few arguments" << endl;
return 0;
}
else {
cout << "Error: invalid argument" << endl;
return 0;
}
}
if (name != "all") {
cout << "Error: invalid argument" << endl;
return 0;
}
// Check for too many arguments
elineStream >> ws;
if (!elineStream.eof()) {
cout << "Error: too many arguments" << endl;
return 0;
}
// Print output for input "all"
cout << "Print: all nodes" << endl;
return 1;
}
どんな助けでも大歓迎です。