- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于赋值,我使用 std::isalnum 来确定输入是字母还是数字。任务的重点是创建一个“字典”。它在小段落上效果很好,但在文本页面上却很糟糕。这是我正在使用的代码片段。
custom::String string;
std::cin >> string;
custom::String original = string;
size_t size = string.Size();
char j;
size_t i = 0;
size_t beg = 0;
while( i < size)
{
j = string[i];
if(!!std::isalnum(static_cast<unsignedchar>(j)))
{
--size;
}
if( std::isalnum( j ) )
{
string[i-beg] = tolower(j);
}
++i;
}//end while
string.SetSize(size - beg, '\0');
最佳答案
我写这篇文章时呈现的代码整体上没有意义。
但是,如图所示,对 isalnum
的调用仅适用于纯 ASCII,因为
EOF
作为参数,并且为了处理国际字符,
每个字符的编码必须是单字节的,并且
setlocale
应该在使用函数之前调用。
关于这三点中的第一点,你可以像这样包装std::isalnum
:
using Byte = unsigned char;
auto is_alphanumeric( char const ch )
-> bool
{ return !!std::isalnum( static_cast<Byte>( ch ) ); }
!!
只是为了消除来自 Visual C++ 的愚蠢警告(关于“性能”的警告)。
免责声明:代码未经编译器处理。
附录:如果您没有 C++11 编译器,而只有 C++03,
typedef unsigned char Byte;
bool is_alphanumeric( char const ch )
{
return !!std::isalnum( static_cast<Byte>( ch ) );
}
正如 Bjarne 所说,C++11 感觉就像一门全新的语言! ;-)
关于c++ - 函数 isalnum() : unexpected results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22394351/
我问这个是对 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
我是一名优秀的程序员,十分优秀!