我正在编写一个使用重定向的计算器(UNIX)./calculator< expressions.txt用于在我的main中使用while循环从文件接收表达式:
while(getline(cin, exp) ) {
try {
return the evaluated expressions
}
catch ( error ) { ... }
}
这对我来说很好,并返回正确的值。 但是,我还希望我的程序在没有重定向文件的情况下接收用户输入(它当前是错误输出和核心转储)。如果没有提供文件,我如何接受用户输入并避免使用while循环。
谢谢。
答案 0 :(得分:2)
而不是重定向stdin
为什么不设置程序接受命令行参数,其中一个可能是文件名。然后
int main(int argc, char* argv[]) {
if(argc > 1)
{
// File name is provided. Open the file and read the data
}
else
{
// File name is not provided. Get input from user.
}
return 0;
}
这有点微不足道,但我相信你明白这一点。对于任何更复杂的命令行arg解析,请使用库。
答案 1 :(得分:0)
当你从这样的时候接受输入时:
./calculator < expressions.txt
这意味着您只从STDIN获取输入。因此,如果用户不提供输入文件,代码本身只会从用户那里获取输入。因此,您无需在代码中单独处理文件。只需从标准输入中获取输入。