gpt4 book ai didi

c++ - std::cout 会影响编译结果吗?

转载 作者:行者123 更新时间:2023-12-02 11:14:11 64 4
gpt4 key购买 nike

我正在使用 C++ 接收包含一些单词的字符串,这些单词由任意数量的空格分隔,并打印出每个单词的第一个字母。

这是我的代码:

#include <iostream>
#include <string>
using namespace std;

int main() {
string str = "hi my name is rex";
int i = 0;
int len = str.length();
while (i < len) {
// cout << " blah "; // <--- Note this line
cout << str[i];
while (str[i] != ' ') ++i;
while (str[i] == ' ') ++i;
}
}

如果我运行这段代码,我会得到一个运行时错误( see here)。

但是,如果我取消注释“blah”行,我会得到“success”,并且会打印“blah h blah m blah n blah i blah r”( see here)。

我知道我可能应该在这两个嵌套的 while 循环中检查 i < len,但我想知道为什么打印“blah”行会对编译结果产生如此大的影响。

谁能帮我解决这个问题?谢谢!

最佳答案

cout正在使用缓冲区。在刷新该缓冲区之前,“输出”保留在缓冲区中 - 内存

但是 while 循环 while (str[i] != ' ') ++i;到达字符串末尾时继续运行。在线IDE给程序一些时间然后放弃或发生段错误

关于c++ - std::cout 会影响编译结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46865246/

64 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com