彭于晏哒哒哒 2022-08-20 12:54 采纳率: 0%
浏览 391
已结题

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编码的方式也能正常显示,请问大家有没有不更改编码方式也能正确显示的方法?

  • 写回答

5条回答 默认 最新

  • 龙川萍 新星创作者: Java技术领域 2022-08-20 13:07
    关注

    格式错误

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

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月19日
  • 修改了问题 8月21日
  • 创建了问题 8月20日