- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我问这个是对 this 的跟进问题。上一个问题几乎是三年前问的,所以我虽然问一个新的问题会更好。
我链接到的那个问题的症结在于 OP 试图运行以下代码行:
find_if(s.begin(), s.end(), isalnum);
在一些容器 s
上。这行代码编译失败,OP 应该这样做
find_if(s.begin(), s.end(), ::isalnum);
接受的答案指出 locale
和 cctype
库中有 isalnum 函数,并且编译器在消除两者之间的歧义时遇到问题,因此 ::
范围解析运算符。我通过仅包含其中一个库对其进行了测试,但编译器仍然存在消除歧义的问题。这是为什么?如果我只包含其中一个库,那么显然编译器不应该“知道”另一个库,那么为什么会发生冲突?
我的问题的第二部分是,::
运算符如何告诉我们需要哪个 isalnum
函数?
谢谢
编辑
我知道 ::
运算符告诉我们我们想要的函数/变量在全局范围内,但这仍然没有回答我的第二个问题。
最佳答案
isalnum
来自 <locale>
在命名空间 std
中定义. isalnum
来自 <cctype>
在命名空间 std
中定义和 全局,因为 C 库中的符号(可能 [1])在全局范围内可用。使用 ::isalnum
请求 isalnum
的版本来自全局范围,而不是来自 namespace std
.
[1]。该标准保证,如果您包含 <ctype.h>
那么这些符号将在全局范围内。对于 C 库头文件,cc*
几乎总是这样。版本也是如此,尽管严格来说它是实现定义的。
关于c++ - isalnum 的范围解析运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32696591/
我问这个是对 this 的跟进问题。上一个问题几乎是三年前问的,所以我虽然问一个新的问题会更好。 我链接到的那个问题的症结在于 OP 试图运行以下代码行: find_if(s.begin(), s.e
您好! 这次让我们减少过多的介绍,直奔主题。 我在 C++ 中使用 isalnum 方法时遇到问题。 代码: int playAgainst = 0; do { cout > playAgai
char dict[N][M]; for(i = 0; i < N; i++) { do { printf("enter word at position: %d\n"
我正在尝试转换一些代码,这些代码旨在从命令行参数中删除除“_”之外的所有非数字字符,除了我试图让代码接受来自常规字符串,我尝试将代码转换为接受字符串,但我一直收到此错误 words.c:9: warn
我正在尝试确定我的字符串中的每个字符是否都是字母数字。我的编译器没有 isalnum 函数。 我的函数在下面,my_struct 有一个大小为 6 的字符数组 (uint8 bom_pn[6]) ..
对于赋值,我使用 std::isalnum 来确定输入是字母还是数字。任务的重点是创建一个“字典”。它在小段落上效果很好,但在文本页面上却很糟糕。这是我正在使用的代码片段。 custom::Stri
我有一个非常简单的程序,我在其中使用 isalnum 函数来检查字符串是否包含字母数字字符。代码是: #include "stdafx.h" #include #include #include
我尝试检查字符串的字符是否为 alnum,然后检查字符串是否仅包含 alnum 字符以打印字符串。当我运行该程序时,什么也没有发生。我有另一个程序,我用它从输入中读取我想要的文本,然后用 FIFO 发
我只有isalnum_t函数 ctype ;我期望功能isalnum那么发生了什么?我包括ctype这个函数是我需要检查字母和数字被声明为 isalnum_t(int, _locale_t) 。网上查
我正在尝试用 g++ 编译一个在 Visual Studio 2012 中编译良好的程序。 我收到错误:error: no matching function for call to ‘ptr_fun
我正在使用 g++ 4.7。 我想做的是这个, find_if(s.begin(), s.end(), isalnum); 其中 isalnum 在 cctype 中定义,s 是一个字符串。 logm
我正在用法语编程,因此,我需要使用重音字符。我可以使用输出它们 #include 和 setlocale(LC_ALL, "") , 但是当我读重音字符时似乎有问题。这是我用来说明问题的简单示例: #
我要拆分 "Use a regexp that matches any combination\nthat satisfies Python's\n\nisalphanumeric() or issp
我写了一个扩展 isalnum 的函数来识别 UTF-8 编码的变音符号。 是否有更优雅的方法来解决这个问题? 代码如下: bool isalnumlaut(const char character)
我用谷歌搜索了我的问题,也许我没有使用正确的搜索词,因为我没有找到解决我问题的方法。 我想做的是使用 push 和 pop 方法和模板做一个后缀计算器表达式。 教授的话 Input The input
我是一名优秀的程序员,十分优秀!