因此,比较式 idx == string::npos 中,如果 idx 的值为-1,由于 idx 和字符串string::npos 型别不同,比较结果可能得到 false。 要想判断 find() 的结果是否为npos,最好的办法是直接比较: if (str.find("abc") == string::npos) { ... } 2、string 类提供了 6 种查找函数,每种函数以不同形式的...
npos 是一个常数,用来表示不存在的位置。取值由实现决定,一般是-1 string 类提供了 6 种查找函数,每种函数以不同形式的 find 命名。 这些操作全都返回 string::size_type类型的值,以下标形式标记查找匹配所发生的位置; 或者返回一个名为 string::npos 的特殊值,说明查找没有匹配。 函数原型: size_t find (...
size_typerfind(constbasic_string& str, size_type pos = npos)constnoexcept; // c-string (2) size_typerfind(constcharT* s, size_type pos = npos)const; // buffer (3) size_typerfind(constcharT* s, size_type pos, size_type n)const; // character (4) size_typerfind(charT c, size_...
正如其他人所提到的, string::npos 它是 size_t 的最大值。 这是它的定义: static constexpr auto npos{static_cast<size_type>(-1)}; 困惑的是,错误的答案得到了投票。 这是一个快速测试示例: int main() { string s = "C :"; size_t i = s.rfind('?'); size_t b = size_t (-1);...
首先,我们来看一下字符串查找函数的基本组成部分。这些函数的返回类型均为string::size_type,这是一种无符号整数类型。查找成功时,返回查找到的字符或子串的起始位置;失败时则返回一个特殊值string::npos,代表查找未成功。 基础查找:find与rfind find函数用于查找指定字符或子串在主串中的位置。可以使用不同的参数来...
实际上 npos 为 -1 ,pos = pos+word.size() ,如果word.size()大于1,for将死循环
你的问题没发全吧~
std::string::npos是C++标准库中string类的静态成员变量,它表示一个无效的或者不存在的字符串位置或索引。这个值在string类中通常用于查找或搜索某个子字符串或字符的位置,当find()或rfind()等函数无法找到所需的子字符串或字符时,它们会返回std::string::npos作为标记表示查找失败。
if (idx == string::npos) ... 上述代码中,idx的类型被定义为int,这是错误的,即使定义为 unsigned int 也是错的,它必须定义为 string::size_type。 npos 是这样定义的: static const size_type npos = -1; 因为string::size_type (由字符串配置器 allocator 定义) 描述的是 size,故需为无符号整数型...
C++中string.find()函数与string::npos C++中string.find()函数与string::npos 先说说string::npos参数:npos 是⼀个常数,⽤来表⽰不存在的位置,类型⼀般是std::container_type::size_type 许多容器都提供这个东西。取值由实现决定,⼀般是-1,这样做,就不会存在移植的问题了。再来说说find函数...