接受用户输入

时间:2014-03-02 20:35:37

标签: c++ file input

我正在编写一个使用重定向的计算器(UNIX)./calculator< expressions.txt用于在我的main中使用while循环从文件接收表达式:

while(getline(cin, exp) ) { 
   try { 
     return the evaluated expressions
 }
catch ( error ) { ... }
}

这对我来说很好,并返回正确的值。 但是,我还希望我的程序在没有重定向文件的情况下接收用户输入(它当前是错误输出和核心转储)。如果没有提供文件,我如何接受用户输入并避免使用while循环。

谢谢。

2 个答案:

答案 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获取输入。因此,如果用户不提供输入文件,代码本身只会从用户那里获取输入。因此,您无需在代码中单独处理文件。只需从标准输入中获取输入。