来自不同代码页的Cout char而不是系统使用

时间:2017-09-22 12:20:46

标签: c++ codepages

我需要输出一个字符,但我的系统使用的代码页没有该符号(即西班牙语感叹号“¡”)。 试图

char excl = 173; 
cout.put(excl);

但它键入了另一个符号。

2 个答案:

答案 0 :(得分:3)

如果操作系统的设置未配置到适当的代码页,则首先必须设置语言环境:

setlocale( LC_ALL, "esp" );

这会将您的语言环境设置为Spanish_Spain.1252(Windows-1252) 然后该字符的值低于161

char excl = 161;
std::cout.put( excl );

std::setlocale

  

setlocale函数将指定的系统区域设置或其部分安装为新的C语言环境。修改仍然有效,并影响所有区域设置敏感的C库函数的执行,直到下次调用setlocale。

常数的解释:

  
      
  • LC_ALL:选择整个C语言环境
  •   
  • LC_COLLATE:选择C语言环境的排序规则类别
  •   
  • LC_CTYPE:选择C语言环境的字符分类类别
  •   
  • LC_MONETARY:选择C语言环境的货币格式类别
  •   
  • LC_NUMERIC:选择C语言环境的数字格式类别
  •   
  • LC_TIME:选择C语言环境的时间格式类别
  •   

答案 1 :(得分:0)

最终起作用的是

SetConsoleCP(1252);
SetConsoleOutputCP(1252);

可能是因为我重新安装了VC ++并在安装过程中只选择了英语语言包。