字符串和特殊字符的奇怪发生

时间:2010-02-14 11:18:59

标签: c++ string character-encoding special-characters

#include <iostream>
#include <string>
using namespace std;

string mystring1, mystring2, mystring3 = "grové";

int main(){
  mystring1 = "grové";
  getline( cin, mystring2 );  //Here I type "grové" (without "")
  cout << "mystring1= " << mystring1 << endl;
  cout << "mystring2= " << mystring2 << endl;
  cout << "mystring3= " << mystring3 << endl;
  return 0;
}

上述代码的输出为:

  

mystring1 = grov8
  mystring2 =grové
  mystring3 = grov8

虽然当我在这里剪切并粘贴代码时,它会显示为:

  

mystring1 =grovΘ
  mystring2 =grové
  mystring3 =grovΘ

为什么mystring2的内容与mystring1和mystring3不同?

2 个答案:

答案 0 :(得分:5)

假设您使用Microsoft Windows:您的源代码的编码与Windows命令行的编码不同。

在命令行中键入 chcp 以查看当前控制台代码页。 (我的是850)

您有三种选择:

  • 将源代码的代码页/编码更改为控制台的代码页/编码。
  • 将控制台的代码页/编码更改为源文件的代码页/编码。
  • 使用库(或Windows API)动态更改编码。

答案 1 :(得分:0)

Windows控制台有cp 866(可能是西里尔文)编码,你的文件有其他(UTF-8或CP1251(我的西里尔文))。

您可以使用Win API函数来解决此问题