c++ - String.length() 显示不正确的值
问题描述
我正在 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)有关:字符串相似度
解决方案
假设您正确描述了输入,即它是一个“单词”,那么问题不在您的代码中。问题必须在运行代码的环境中。它有某种机制可以将标准输入提供给您的程序。要么对总输入长度有限制,要么对行长度有限制。4 KB 是 4096 字节,因此您的输入可能受此限制:单词的 4095 个字符加上换行符(或终止 0 字节的字符串,或其他)。
如果您在浏览器中的某种 Web 界面下运行它,问题甚至可能是,网页中的输入字段有这个限制。
如果你需要深入研究这个,试着逐个字符地阅读,看看你得到了什么,有多少个字符和多少个换行符。还要检查cin.fail()
、cin.eof()
和。对于问题代码,您应该期望 failbit 为 false,并且 eofbit 可能为 true 或 false,具体取决于输入的截断方式。cin.bad()
cin.good()
推荐阅读
- python - pip3 在 macOS 上崩溃
- sql-server - 具有最小存储大小的 SQL 数据库备份
- selenium - 使用 Scrapy / Selenium 的 Web Scraping 应用程序生成错误:“ModuleNotFoundError 'selenium'”
- vue.js - v-on 处理程序中的错误:“TypeError:这是空的”
- javascript - Javascript promise.all()
- rust - 如何迭代 trait 对象或无大小类型的元组
- javafx - JavaFX 组合框在选择选项后设置 PromptText
- google-analytics - 如何将 vars-data-myvar 放入谷歌分析变量
- python - 用python编写快速代码
- bash - Bash IFS 忽略部分字符串