关于获取行和字符串查找函数的问题
Question about get line and string find function
我是 c++ 的新手。我正在尝试从文本的每一行中删除一些单词。但是,如果找不到该单词,它将返回 4294967295 而不是 -1。有人遇到同样的情况吗?首先,我使用文本中的"getline.txt
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);
它现在有效。但我不明白,我该如何解决它。谢谢。
使用 std::string::npos
.
while (line.find(word) != std::string::npos) {
// ...
}
文档中未能满足循环条件的关键点是:
尽管定义使用
-1
,size_type
是无符号整数类型,并且由于有符号到无符号的隐式转换,npos
的值是它可以容纳的最大正值。这是一种可移植的方法,用于指定任何无符号类型的最大值。
硬编码-1
、4294967295
或任何其他常量在不同的实现中是不可靠的。
来自 cpp首选项
尽管定义使用 -1,但
size_type
是无符号整数类型,并且由于有符号到无符号的隐式转换,npos 的值是它可以容纳的最大正值。这是一种可移植的方法,用于指定任何无符号类型的最大值。
所以你应该使用std::string::npos
,而不是依赖幻数-1。
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 一个函数,用于查找字符串1包含字符串2 c++的次数
- 在 c++ 中查找字符串中没有循环的数字总和
- 查找字符串可以减少到 0 的步骤数
- C++ 查找字符串中存在的元素向量
- 查找字符串中最常见的字母
- C++使用旧编译器GCC 4.4.0在结构列表中查找字符串
- 查找字符串是否包含字符串向量的任何一个元素的最佳方法
- 如何使用字符串流查找字符串中的整数总和?
- 穿过链接列表以查找字符串
- 查找字符串中存在的不同字符
- 如何使用 std::find 从向量的第一个元素中查找字符串<字符串对<字符串、字符串> >类型?
- 如何从C++的输入中查找字符串并将其替换为另一个字符串
- C++在多个字符串中查找字符串
- 使用std :: quare_range查找字符串向量中发生的前缀范围
- 在字符串列表中查找字符串,然后将字符串设置为找到的字符串?
- 尝试在类的向量中查找字符串
- 是否有一种算法可以查找字符串中任何指定字符的第一次出现
- 在.txt中查找字符串并获取C++中的行内容
- 如何在考虑标点符号的同时在文件中查找字符串