C++ 如何在c+中读取1.000.000个字符的字符串+;使用getline()?
我需要在同一行输入上读取字符串的1.000.000个字符,并且我通常使用getline(cin,string_name)来完成所有这些任务。但在这种情况下,我无法得出这些“大”数字。C++ 如何在c+中读取1.000.000个字符的字符串+;使用getline()?,c++,string,C++,String,我需要在同一行输入上读取字符串的1.000.000个字符,并且我通常使用getline(cin,string_name)来完成所有这些任务。但在这种情况下,我无法得出这些“大”数字。 我该怎么解呢?我唯一不同于正常的想法是在字符串中保留空格。 这样它就不会花时间重新分配空间 // 1,000,000 is approx 1M that should not be that big. std::string line; line.reserve(1'000'100) // Tiny bit
我该怎么解呢?我唯一不同于正常的想法是在字符串中保留空格。 这样它就不会花时间重新分配空间
// 1,000,000 is approx 1M that should not be that big.
std::string line;
line.reserve(1'000'100) // Tiny bit extra for fun. I bet there is some overhead.
std::getline(std::cin, line);
“,,但在这种情况下,我无法得到这些“大”数字…”为什么不呢,会出现什么错误,问题是什么?
std::getline()
仅受可用内存的限制,因此1000000个字符应该不需要它来处理。唯一可以阻止它这样做的是,如果string\u name.max\u size()
小于1000000个字符(不太可能,除非您在嵌入式系统上),或者终端不能在一行上接收1000000个字符(更可能)。您是否尝试过从文件而不是从cin
读取1000000个字符?我在尝试解决“codeforces”平台的问题时遇到了这个问题。算法运行良好,直到平台放入1000000个字符的行,因为表示“时间超过错误”。所以idk如果问题真的是内存或smth其他。