0

请参阅下面的评论。

int main(){
    //freopen("input.txt","r",stdin);//if I uncomment this line the console will appear and disappear immediately
    int x;
    cin>>x;
    cout<<x<<endl;
    system("pause");
    return 0;
}

如何让它发挥作用?

4

3 回答 3

4

解决方案1:使用cin.ignore代替system

...
cout<<x<<endl;
cin.ignore(1, '\n'); // eats the enter key pressed after the number input
cin.ignore(1, '\n'); // now waits for another enter key
...

解决方案 2:如果您使用的是 MS Visual Studio,请按 Ctrl+F5

解决方案 3:重新打开con(仅适用于 Windows,似乎是您的情况)

...
cout<<x<<endl;
freopen("con","r",stdin);
system("pause");
...

如果您使用解决方案 3,请不要忘记添加有关代码正在做什么以及原因的注释:)

于 2011-10-27T16:50:35.427 回答
1

使用std::ifstream而不是重定向标准输入:

#include <fstream>
#include <iostream>

int main()
{
    std::ifstream fin("input.txt");
    if (fin)
    {
        fin >> x;
        std::cout  << x << std::endl;
    }
    else
    {
        std::cerr << "Couldn't open input file!" << std::endl;
    }

    std::cin.ignore(1, '\n'); // waits the user to hit the enter key
}

cin.ignore(从anatolyg的答案中借用了技巧)

于 2011-10-27T17:18:24.600 回答
0

您用于freopen更改程序的标准输入。您启动的任何程序都会继承程序的标准输入,包括pause程序。程序从input.txtpause读取一些输入并终止。

于 2011-10-27T16:43:18.677 回答