C++中使用cin函数输入中文,再输出时乱码

问题遇到的现象和发生背景

学习C++在做一个简单的项目时发现一个乱码问题,尝试了多种方法无法解决

问题相关代码

使用函数内赋值的方式输出结果正确:

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string i;
    i="你好";
    cout<<i<<endl;
    return 0;
}
运行结果
你好

但是使用cin函数输入再输出出现乱码:

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string i;
    cin>>i;
    cout<<i<<endl;
    return 0;
}
运行结果
你好
��
我的解答思路和尝试过的方法

思索再三不知道是哪里的编码出现问题,想到可能是编译器使用的编码跟我的不一样导致的?
为何函数内直接给i赋值可以正常打印,我自己用cin函数敲进去不行
由于原本使用的是UTF-8编码,尝试更改电脑时区/区域里的编码方式为GBK编码后正常显示了
难道cin函数只能识别GBK编码的中文输入?

我想要达到的结果

但是我想用UTF-8编码的方式也能正常显示,请问大家有没有不更改编码方式也能正确显示的方法?

格式错误

#include <iostram>
#include <string.h>
using namespace std;
int main()
{
    string i;
    cin>>i;
    cout<<i<<endl;
return 0;
}

img


为什么我可以?

g++ 加编译参数-fexec-charset=utf-8

看下这篇博客,也许你就懂了,链接:C++ cin输入多个数据

请问博主你解决了吗?我这是跟你一样的问题...