谁能帮我用fflush
在C ++
下面是在C代码示例
#include <stdio.h>
using namespace std;
int a,b,i;
char result[20];
int main() {
scanf("%d %d\n", &a, &b);
for (i=1; i<=10; i++) {
printf("5\n");
fflush(stdout);
gets(result);
if (strcmp(result, "congratulation") == 0) break;
}
return 0;
}
这是获得交互式输入程序。
我通常使用cin
和cout
所以是有可能不使用printf
和scanf
?
翻译到C ++编程风格是这样的:
#include <iostream>
using std::cin;
using std::cout;
using std::string;
int main() {
string line;
int a, b;
if (cin >> a >> b) {
for (int i = 0; i < 10; i++) {
cout << "5" << std::endl; // endl does the flushing
if (std::getline(cin, line)) {
if (line == "congratulations") {
break;
}
}
}
}
return 0;
}
请注意,我特意加了一些错误检查。
如果您需要对C IO设施,包括<cstdio>
。 现在,您可以std::printf
和std::fflush
等你可能会考虑调用std::ios::sync_with_stdio()
如果你想用C IO和interwovenly iostreams的。
虽然我还没有完全了解你的问题,C ++程序的版本将是这样的(假设hasil
应该是result
):
#include <iostream>
int main() {
int a,b,i;
std::string result;
std::cin >> a >> b;
for (i=1; i<=10; i++) {
std::cout << "5" << std::endl;
std::cin >> result;
if (result == "congratulation") break;
}
return 0;
}
请注意, std::endl
相当于'\n' << std::flush
,因此两者的放线结束,并呼吁.flush()
在流(这是你的fflush
当量)。
其实我得到了真正相当于你scanf
调用(而不是按A和B之间的输入),你就必须做一些事情,如:
#include <sstream>
...
std::string line;
std::cin >> line;
std::istringstream str(line);
str >> a >> b;