C++ 为什么是“功能”;“功能”;不被处决? #包括 #包括 使用名称空间std; 长函数(字符串s,长n){ cout

C++ 为什么是“功能”;“功能”;不被处决? #包括 #包括 使用名称空间std; 长函数(字符串s,长n){ cout,c++,C++,您是输出缓冲的受害者 默认情况下,cout只会在遇到换行符时将传出数据写入操作系统。这是一种高效的方法,如果您使用1000个不同的变量构建数据文件,则无需向磁盘写入1000次。相反,整个字符串都会在内存中生成 您确实应该使用cerr进行调试跟踪,因为它是无缓冲的。但是您也可以让cout工作,只要记住写一个换行符或刷新: std::cout << "lol\n"; // this works std::cout << "lol" << std::flush;

您是输出缓冲的受害者

默认情况下,
cout
只会在遇到换行符时将传出数据写入操作系统。这是一种高效的方法,如果您使用1000个不同的变量构建数据文件,则无需向磁盘写入1000次。相反,整个字符串都会在内存中生成

您确实应该使用
cerr
进行调试跟踪,因为它是无缓冲的。但是您也可以让
cout
工作,只要记住写一个换行符或刷新:

std::cout << "lol\n"; // this works

std::cout << "lol" << std::flush; // also works

std::cout正在调用函数
funct


顶部的输出(
cout在循环中通过传递给函数的字符串的各个字母,您需要

for(i=0;i<len;i++)

用于(i=0;i可能是某个无限循环。请发布调试会话的结果。包括导致问题的语句中使用的变量值。在递归的情况下,您可能希望绘制函数调用。此外,您可能希望使用换行符或
std::endl
终止输出文本以刷新输出。@ThomasMatthews Ev函数中的第一条语句在调用后执行。问题是:
while(i
如果字符串包含至少一个与
a
不同的字符,它将进入无限循环。@AndréSanson谢谢。我在函数中运行无限循环,因此在循环之前没有执行第一行。@SiddharthPandey我不认为这是真的。无限循环是您的问题,但输出是错误的没有显示,因为它被缓冲,就像
Ben
描述的那样,并且只有在您修复错误并允许代码结束程序后刷新缓冲区后才输出。@MartinYork是的,我的意思是无限循环不允许“lol”打印,因为它卡在缓冲区中,等待结束行或程序结束。实际上,我只需要分别迭代到l并将a存储在rem中。然后迭代其余部分并将其存储在countYes中。我错误地将I的增量放在if块中。谢谢
while(i<len)

    if(s[i] == 'a')

while(i<len)

    if(s[i] == 'a')
for(i=0;i<len;i++)
for(i=0;i<l;i++)