gpt4 book ai didi

C++ 程序不能完全读取大量输入。为什么?

转载 作者:行者123 更新时间:2023-11-30 04:05:59 26 4
gpt4 key购买 nike

我想解决一个输入相对较大(300 行)的编程竞赛任务(C++ 和 XCode)。将测试输入复制到控制台时,它不会全部读取。所以我写了一个简单的测试程序来简单地读入 300 行:

#include <iostream>

using namespace std;

int main(int argc, const char * argv[])
{
ios_base::sync_with_stdio(false);

string xxx;
for(int i = 0; i < 300; i++)
cin >> xxx;
return 0;
}

如果我执行它并将带有“aaaaaaaaaa”的 340 行复制到控制台,它不会结束。如果我用调试器停止它,它会说 i = 92。如果我继续,它就会退出。但是当我将 50 行的片段复制到控制台时,它会立即退出......

谁能帮我解决这个问题?

PS:我插入了“ios_base::sync_with_stdio(false);”,因为我读到这会加快输入速度。

最佳答案

I want to solve a programming contest task (C++ with XCode) which has a relatively big input (300 lines). When copying a test input into the console, it doesn't read it all

当您每行有多个单词时这是可能的,因为 cin >> xx 将读取单词而不是行。

您需要使用 getline method实际阅读行。

while (getline(cin, xxx));

If I execute it and copy 340 lines with "aaaaaaaaaa" into the console, it doesn't end. If I stop it with the debugger, it says i = 92.

是的,这是完全相同的症状。即使你每行一个词,你也只会达到 300 行,永远不会达到 340。

下面是我编写的全部代码,供您引用:

#include <iostream>

using namespace std;

int main(int argc, const char * argv[])
{
ios_base::sync_with_stdio(false);

string xxx;
while (getline(cin, xxx))
cout << xxx << endl;
return 0;
}

关于C++ 程序不能完全读取大量输入。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23070445/

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