在 C++ 上使用 fflush
有人可以帮助我在 C++ 中使用 fflush
这是 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
?
Can someone help me using fflush
in C++
Here is a sample code in 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;
}
This is program for getting interactive input.
I usually use cin
and cout
so is it possible not using printf
and scanf
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
C++ 编程风格的翻译是这样的:
请注意,我故意添加了一些错误检查。
The translation to C++ programming style is this:
Note that I deliberately added some error checking.
虽然我还没有完全理解你的问题,但你的程序的 C++ 版本会是这样的(假设
hasil
应该是result
):注意,
std ::endl
相当于'\n' << std::flush
,因此都将行结束并在流上调用.flush()
(这与您的fflush
等效)。实际上,要获得与
scanf
调用真正等效的内容(而不是在 a 和 b 之间按 Enter 键),您必须执行以下操作:Although I haven't completely understood your question, the C++ version of your program would be something like this (assuming
hasil
should beresult
):Note, that
std::endl
is equivalent to'\n' << std::flush
and therefore both puts the line end and calls.flush()
on the stream (which is yourfflush
equivalent).Actually to get the real equivalent to your
scanf
call (and not press enter between a and b), you would have to do something like:如果您需要 CIO 设施,请包含
< /a>.您现在有std::printf
和std::fflush
等。您可以考虑调用std::ios::sync_with_stdio()
如果你想交织使用 C IO 和 iostream。If you have need for C IO facilities, include
<cstdio>
. You now havestd::printf
andstd::fflush
etc. You might consider callingstd::ios::sync_with_stdio()
if you want to use C IO and iostreams interwovenly.