字符串和特殊字符的奇怪出现

Ste*_*tef 0 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;
}
Run Code Online (Sandbox Code Playgroud)

上面代码的输出是:

mystring1 = grov8
mystring2 =grovémystring3
= grov8

虽然当我在这里剪切并粘贴代码时它来自:

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

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

小智 5

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

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

你有三个选择:

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