c++ - 关于获取行和字符串查找功能的问题
问题描述
我是 C++ 新手。我正在尝试从文本的每一行中删除一些单词。但是,如果找不到该单词,则返回 4294967295 而不是 -1。有没有人遇到同样的情况?首先,我使用 text.txt 中的“getline”
while(getline(fintext,line)){
...
}
然后我用
while (line.find(word) != -1){
line.erase(line.find(word),word.length()-1);
line.find(word);
它不起作用。
while (line.find(word) != 4294967295){
line.erase(line.find(word),word.length()-1);
line.find(word);
现在可以了。但我不明白,我该如何解决。谢谢你。
解决方案
while (line.find(word) != std::string::npos) {
// ...
}
文档中未能满足您的循环条件的关键点是:
虽然定义使用
-1
,size_type
是无符号整数类型,并且 的值npos
是它可以容纳的最大正值,这是由于有符号到无符号的隐式转换。这是一种指定任何无符号类型的最大值的可移植方式。
硬编码-1
,4294967295
或任何其他常量在不同的实现中是不可靠的。
推荐阅读
- android - 在 Android 中将 drawableEnd 添加到 SwitchCompat
- node.js - 重用全局数据库池/连接
- excel - Best Fit 包 - VBA 请求
- javascript - 如何在整个会话中保持 select 的值
- django - django rest 框架中的路径错误:不支持在 include() 中指定命名空间而不提供 app_name
- php - MacOS XAMPP 访问禁止错误 403 - 您无权访问请求的目录
- c# - 如何在 C# 中的 datagridview 中撤消第二天删除的行?
- mongodb - 400 错误请求
- javascript - 对象解构与分配(性能)
- scala - 使用Scala列出给定HDFS路径的所有子目录到一定深度?