我正在cpp中尝试以下代码
#include <iostream>
#include <string>
void Strlength(const string& s) {
cout << s.length() << endl;
}
int main() {
string s;
cin >> s;
cout << s.length() << endl;
Strlength(s);
return 0;
}
我输入的字符串长100,000个字符,就像"xxxxxxx...xxxxabcde"
(用其余的x
填充...)
这使我的输出为
4095
4095
我期望输出为100000
。我在做什么错了?
这与hackerrank问题(测试案例10)之一有关:String Similarity
答案 0 :(得分:0)
假设您正确地描述了输入,即它是一个“单词”,那么问题就不在您的代码中。问题必须出在运行代码的环境中。它具有某种将标准输入馈送到程序的机制。在总输入长度上有限制,或者在行长上有限制。 4 KB为4096字节,所以也许您的输入受到以下限制:单词4095个字符加上一个换行符(或终止字符串的0个字节,等等)。
如果您是在浏览器的某种Web界面下运行此程序,则问题甚至可能在于网页中的输入字段具有该限制。
如果需要对此进行深入研究,请尝试按char读取char并查看得到的内容,多少个char和多少个换行符。还要检查cin.fail()
,cin.eof()
,cin.bad()
和cin.good()
。对于问题代码,您应该期望failbit为false,而eofbit可能为true或false,这取决于输入被截断的方式。