我在c++中搜索以验证字符串,并找到了这种机制。换句话说,如果存在名为name的变量,则用户将不能只向变量输入数字,只允许字符。
发现的机制:
if(std::string::npos != variable.find_first_of("0123456789")
有人能解释一下上述机制背后的逻辑吗。我不明白非营利组织意味着什么?我找了一个答案,但找不到我想要的。
谢谢您抽时间见我。
发布于 2014-05-06 02:24:23
std::string::npos
是一个常量,在这个上下文中,它的意思是“未找到”。find_first_of
函数从作为参数传递的字符串中搜索字符的第一次出现。如果找不到(意味着variable
中没有数字),则返回npos
。
代码使用了一些人认为有用的约定,而不是
if (f() != CONSTANT)
他们写
if (CONSTANT != f())
它被认为是为了避免问题的时候,而不是!=
使用=
,所以它是赋值而不是比较。对于今天的编译器和警告,我发现这个惯例不值得,但有些人的观点不同。
发布于 2014-05-06 02:22:58
从文件中:
npos是一个静态成员常量值,对size_t类型的元素具有最大的可能值。 作为返回值,它通常用于表示不匹配。
如果没有找到匹配项,则函数返回字符串::npos。
该机制的逻辑是测试find_first_of
是否返回npos
以外的内容。在这种情况下,这意味着字符串包含来自字符串"0123456789"
的至少一个字符。
发布于 2014-05-06 02:29:07
std::string::npos
表示std::string
函数返回的不同类型的失败的常量。在这种情况下:没有发现这样的特征。
这个常量通常被定义为
static const size_type npos = -1;
https://stackoverflow.com/questions/23491931
复制相似问题