zoukankan      html  css  js  c++  java
  • 转: isspace 函数中文报错

      当用isspace()判断中文时,会出现  (unsigned)(c + 1) <= 256);” 错误。

     解释:  试图用locale为ASCII的isspace来判断GBK即中文编码的空格,对么?如果我理解正确的话,那么这不是VC的问题,而是使用上的问题。

       对于C++而言,应该使用isspace(ch, loc); 这个版本,loc是类型为std::locale的变量,如果你想判断GBK的空格,那么让loc是GBK的locale,然后这个函数就正常了。

    你现在使用的是C的isspace(ch)函数,这个函数使用的是默认的全局locale,你把这个全局的设为GBK,也应该可以解决这个问题。总之调用locale为默认的ASCII的locale的isspace去判断编码为GBK的字串是否是空格,逻辑上不对

     解决方法是在调用本函数之前设置编码本地化,代码如下

                           std::locale::global(std::locale(""));

    其实解决方法和fstream 的本地化路径的问题是一样的.

  • 相关阅读:
    Oracle-DQL 7- 集合操作
    Oracle-DQL 6- 子查询
    Oracle-DQL 5- 分组函数(多行函数)
    Oracle-DQL 4- 多表查询
    Oracle-DQL 3- 单行函数
    构建gulp项目
    重开Vue2.0
    ES6
    emmet简单记录
    webpack 3.X研究
  • 原文地址:https://www.cnblogs.com/youxin/p/2550551.html
Copyright © 2011-2022 走看看