将输出重定向到文件并询问用户输入

时间:2015-12-27 04:36:46

标签: c++ linux

有没有办法将控制台输出重定向到日志文件,同时还允许控制台询问用户输入文本?从我对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;
}

控制台最初只有一个闪烁的光标或输出所有内容并将副本存储在文件中。我希望是可以让控制台输出只有“输入名称:”而不是“欢迎!所以你的名字是'测试'。

由于

2 个答案:

答案 0 :(得分:0)

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

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命令来做到这一点。

答案 1 :(得分:0)

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

    cerr << "ENTER NAME: ";