【问题标题】:Redirect output to file and ask user input将输出重定向到文件并询问用户输入
【发布时间】:2015-12-27 04:36:46
【问题描述】:

有没有办法将控制台输出重定向到日志文件,同时还允许控制台询问用户输入的文本?根据我对 Linux 的了解,要将控制台输出重定向到文件,只需键入以下 ./Executable > output.log./Executable | tee output.log。现在,例如,我在下面的代码中尝试:

int main(){
    std::string name;
    std::cout << "ENTER NAME: ";
    std::cin >> name;

    std::cout << "Welcome! So your name is '" << name << "'" << endl;
    return 0;
}

控制台最初只会有一个闪烁的光标或输出所有内容并将副本存储在文件中。我希望控制台可以只输出“ENTER NAME:”而不是“Welcome!所以你的名字是'Test'。

谢谢

【问题讨论】:

标签: c++ linux


【解决方案1】:

是的,这是可能的。有两种可能的方法。 第一个也是更简单的方法是打开一个日志文件并将输出写入该文件。

int main(){
    std::string name;
   ofstream myfile;
  myfile.open ("log.txt");
    std::cout << "ENTER NAME: ";
    std::cin >> name;

    std::cout << "Welcome! So your name is '" << name << "'" << endl;
  myfile << "Welcome! So your name is '" << name << "'" ;//write to the file.
  myfile.close();
    return 0;
}

其次,如果您不想像 linux 那样重定向输出。你可以通过使用“system”调用运行linux命令来做到这一点。

【讨论】:

    【解决方案2】:

    还有一种更简单的方法;只需使用cerr(不会被&gt;| 重定向)而不是cout 来输出提示:

        cerr << "ENTER NAME: ";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多