C++ npos

2024年8月28日 | 阅读 4 分钟

在本文中,我们将研究 C++ 中的 string::npos。我们还将通过一个编程示例来了解如何使用 string::npos 方法 来判断一个字符串是否包含在另一个字符串中。

什么是 string_npos?

npos 是一个 常量静态成员值,表示 size_t 类型元素的**最大值**。static 关键字 有助于**内存预留**,而 constant 关键字 使其成为一个**只读变量**,这意味着它的值不能被**修改**。当字符串的成员函数使用此数字作为 len (length) 参数 的值时,它表示**“直到字符串末尾”**。由于 size_t 是一个 无符号整型 值,这个常量的声明值为 -1,这是此类型可以表示的最大数字。

简单来说,npos 类似于 no-position,其返回值表示在字符串中未找到匹配项。因此,如果返回 true 值,则表示未找到匹配项。

语法

它具有以下语法:

在这种情况下,静态常量值 具有 npos 的最大值,即 size_t 可以取的值。当它被定义或存储时,它的值为 -1

案例研究

上述代码有助于从字符串中提取匹配的记录。它从**索引 0**一直检查到字符串的末尾。**第二个语句**是**条件语句**;如果它为**真**,编译器将执行下一个语句。如果第二个语句为**假**,编译器将执行下一个语句。

包含的库

我们可以通过在代码中包含上述库来使用 string::npos。在不包含 "iostream" 的情况下,也可以通过 string::npos 找到**输入**和**输出**。我们先测量字符串的长度,然后再将其与其他字符串进行比较。

示例

使用 "String::Npos" 方法,下面的程序会在 字符串 s2 中查找 字符串 s1

编码

输出

Checking if JtP contains Java T Point
Java T Point is not present in the string JtP

Checking if JtP contains JtP
JtP found at index 0 in the string JtP

说明

第一次函数调用 check (s1, s2),判断主字符串 "JtP" 是否包含子字符串 "Java T Point"。考虑到 s1 不包含此 子字符串

第二次函数调用 check (s1, s3);验证子字符串 "JtP" 是否包含在主字符串 "JtP" 中,因为 s1 的起始索引就是此子字符串所在的位置。

String__npos 的用途

以下是一些示例,演示了 string__npos 在 C++ 中的用法

查找子字符串

string_npos 值可用于确定子字符串是否包含在 字符串 中。

字符是否存在

使用 string_npos 来确定 字符 是否存在于字符串中。locate() 函数 有助于查找字符的第一个实例(如果存在;否则,它返回 -1)。

示例

输出

Character 't' is present at index 4

提取子字符串

借助 substr() 函数string_npos 有助于从 更大的子字符串 中派生出更小的子字符串。substr() 方法 的输入是 起始位置长度。如果我们要从 字符串的起始位置 提取子字符串直到结束,我们可以将 string_npos 作为长度参数传递。

示例

输出

JTP