识别字符串

时间:2015-10-06 11:39:08

标签: c++ c++11

我有一个for循环查看字符串中的每个字符,目的是消除一些字符。例如,一个有效的比较是......

if(str[i] == '!'){str[i] = NULL;}

我还需要消除颠倒的问号。我试过几件事,包括一些十六进制代码和以下内容。

if(str[i] == 191){str[i] = NULL;}

在这里,我得到一个错误,上面写着“常量191与'value_type'类型的表达式的比较始终为false。”我在这里错过了什么?我怎样才能抓住颠倒的问号?

1 个答案:

答案 0 :(得分:3)

您的字符串anyType{Id=101;Name=Nitin;Salary=100000';} 很可能是value_type,可能会在您的平台上签名,也可能不会在您的平台上签名。

如果已签名,char将为127 ...您在与191进行比较时会发现问题吗?这就是编译器所抱怨的。

有几种解决方法。

最粗略的是常量转换为CHAR_MAX

更优雅(但取决于您的编译器的功能)是在源代码中实际编写value_type并确保您的编辑器和编译器就源文件使用的编码达成一致。

虽然标准只需要支持源中的ASCII-7字符子集(减去反引号,'¿'$),但实现是免费的(通常非常有能力)支持其他编码

对于GCC,选项为@,默认为UTF-8。

当然,所有这些都假设您的来源和输入同意他们各自的编码。可以这么说,在同一个代码页上。 ; - )

尽管如此,如果您在应用程序中处理国际字符,您可能需要查看ICU library和完整的Unicode支持。