- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在自定义类的自定义 find()
方法返回自定义数据结构中元素的索引位置的场景中,有没有比返回 string::npos 更优雅的东西
?
find()
方法的返回类型是size_t
。所以我需要它的类型为 size_t。
string::npos
为-1
,即unsigned long long
的最大值。虽然这很好用,但我的问题是命名:string
。我不希望与 string
有任何关联。是否有针对这种常见和一般场景更普遍命名并与 size_t
兼容的内置内容?
最佳答案
如果您的自定义类想要从它的查找函数返回一个 size_t,那么只需定义您自己的 size_t 常量,供消费者引用为“未找到”。例如(伪代码,未验证编译):
class Foo
{
public:
static const size_t npos = static_cast<size_t>(-1);
size_t find(/*thing to find here*/) const
{
// logic to search for element
// element not found
return(npos);
}
};
然后消费者可以像 std::string 一样使用它:
Foo foo;
size_t pos = foo.find(/*thing to find here*/);
if(pos != Foo::npos)
{
// Element found
}
关于c++ - 替代字符串::npos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49216037/
我想使用 -1 来表示尚未计算的大小: std::vector sizes(nResults, -1); 我想知道为什么没有更具表现力的方式: std::vector sizes(nResults,
您好,我目前是一年级学生,仍在学习 R 在线类(class),我收到一条错误消息:“ans[npos] <- rep(no, length.out = len)[npos] 中的错误:替换的长度为零另
我正在对一个字符串进行一系列搜索,并且在该行的某处会遗漏一个字符串,并且我的一组搜索应该会失败。 我原以为一旦位置达到 std::string::npos 它就会留在那里,但事实并非如此。将 std:
在自定义类的自定义 find() 方法返回自定义数据结构中元素的索引位置的场景中,有没有比返回 string::npos 更优雅的东西? find() 方法的返回类型是size_t。所以我需要它的类型
我是 C++ 的新手,刚从 Java 转过来,对此感到疑惑: pos = result.find(remove[i]); if (pos == string::npo
我正在阅读一本关于 C++ 的书,它只是介绍了如何使用 string::npos 检查字符串中是否存在字符位置。不过,我不明白这种机制怎么可能知道我指的是哪个字符串!此特定代码正在计算子字符串的出现次
这个问题在这里已经有了答案: What does string::npos mean in this code? (12 个答案) 关闭 9 年前。 下面的语句是什么意思? string s
以下代码片段中的短语 std::string::npos 是什么意思? found = str.find(str2); if (found != std::string::npos) std:
我的问题基本上是,每当我使用 Visual Studio(Windows 10 计算机上的 2015 社区版)进行调试时,当我尝试将鼠标悬停在变量上或查看调试 View 的本地或自动部分中的变量时,我
我是一名初学者程序员,如果要了解代码及其工作原理,我会尽力了解这一部分。 所以这是代码: #include #include //C++ Strings Library using namesp
我的代码计算字符串 temp 中的空格,效果很好。在代码的后面,我有一个类似的循环,但没有按预期结束。 根据我的调试和一些研究,我确定 while 循环没有在应该停止的时候停止第二次,因此抛出异常(s
std::string.npos 曾经有效吗? (与正确的 std::string::npos 相反。) 我在我正在处理的一个旧项目中经常看到它,它不能用 VS2010 编译。 它是前标准时代的东西吗
我编写了一个程序,使用 find_last_of 方法在字符串中查找字符。 // ... unsigned found; found = name.find_last_of(character); i
我正在尝试让这个函数分割一个字符串,然后在不带空格且全部小写的情况下返回它。为此,我试图找到一个 "" 来查看字符串 "The Time Traveler (for so it would be co
标题相对不言自明。我认识到与其他答案的相似性,但所有这些都有不同的运算符安排(因此有不同的转换规则)。所以我需要一个可以澄清这个特殊情况的答案。 如果有人能指出解释这一点的标准部分,我会很乐意投票并接
我收到一个错误: error: comparison of constant 18446744073709551614 with expression of type 'unsigned in
这个问题在这里已经有了答案: Why is (18446744073709551615 == -1) true? (4 个答案) 关闭 5 年前。 在构造函数中: CSVBMFBlockModelR
#include #include #include #include using namespace std; int main(int argc, char* argv[]) { ifst
请查看下面的代码片段,特别是第一个“else if”语句。我希望用户能够执行此操作: 加载文件名 所以我想检查“load”是否在字符串中,并尝试打开“load”之后的任何内容。然而,string::n
如果std::size_type的 std::string是默认分配器的, 21.3.1 Class template basic_string typedef typename allocator_
我是一名优秀的程序员,十分优秀!