识别字符串中颠倒的问号
Identify upside down question mark in a string
我有一个for循环,查看字符串中的每个字符,目的是消除一些字符。例如,一个有效的比较是…
if(str[i] == '!'){str[i] = NULL;}
我还需要消除颠倒的问号。我尝试了一些东西,包括一些十六进制代码和以下。
if(str[i] == 191){str[i] = NULL;}
在这里,我得到一个错误,"常量191与类型为‘value_type’的表达式的比较总是假的。"我遗漏了什么?我怎样才能捕捉到颠倒的问号?
您的字符串的value_type
很可能是char
,它可能在您的平台上签名,也可能不签名。
如果有符号,CHAR_MAX
将是127…和191年相比,你们发现问题了吗?这就是编译器所抱怨的。
有几种方法可以解决这个问题。
最粗暴的方法是将常量转换为value_type
。
更优雅的(但取决于你的编译器的功能)是在你的源代码中写'¿'
,并确保你的编辑器和编译器同意源文件使用的编码。
虽然标准只要求在源代码中支持ASCII-7字符的子集(减去反引号,$
和@
),但实现是自由的(并且通常非常有能力)支持其他编码。
对于GCC,选项是-finput-charset=...
,默认为UTF-8。
话虽如此,如果您要在应用程序中处理国际字符,您可能需要查看ICU库和完整的Unicode支持。
相关文章:
- C++将 wwn 字符串转换为识别为十六进制的数据类型
- 如何识别字符串只包含数字
- C++宏:如何在可识别的字符串文本之前捕获所有内容
- 字符串数组C++中的字符识别不正确
- 如何识别输入的输入字符串在 c++ 中是两个还是多个单词
- 字符串中的重复字符是否可以在 O(n) 中识别和量化
- C++错误,编译器将无法识别字符串::p ush_back
- cpp 预处理器无法识别 UTF-32 字符串
- 您如何使用字符串或字符在C 中识别名称识别变量
- while循环中无法识别字符串流
- 编译器错误和字符串类无法识别方法
- 编译器未识别 getline()。此外,它不允许 CIN 和 COUT 使用字符串
- 使用 G++ -C 的 C++ 编译器错误:编译器将 const 字符串识别为 int
- 如何识别C中字符串中包含的数字类型
- 试图将字符串作为类的参数传递,但在C++中它被识别为字符数组
- Cin 不工作?我识别了字符串
- 字符串无法识别?C4430:缺少类型说明符 - 假定为 int
- 用于识别具有哈希且无误报的字符串匹配项的算法
- 识别字符串中的 C 11 关键字 (string.at() 问题)
- 如何识别字符串是否为数字,如果是,则将其转换为int?(C++)