请参阅下面的评论。
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;
}
如何让它发挥作用?
请参阅下面的评论。
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;
}
如何让它发挥作用?
解决方案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,请不要忘记添加有关代码正在做什么以及原因的注释:)
使用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的答案中借用了技巧)
您用于freopen
更改程序的标准输入。您启动的任何程序都会继承程序的标准输入,包括pause
程序。程序从input.txt中pause
读取一些输入并终止。