在VC2015环境编译的C++代码在用Cout输出中文字符时出现问题

qq_19975625 2017-02-08 11:08:37
如图中编译出程序窗口所示,在用COUT输出中文字符时,"你"和"好"之间隔了一个空,这是代码中所没有的,在用COUT输出string对象(同样是中文字符)时也隔了一个空,重装当前IDE也无法解决,恳求各位网友解决。
...全文
377 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-02-09
  • 打赏
  • 举报
回复
仅供参考:
#pragma warning(disable:4786)
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main () {
    wstring ws1,ws2;

    wcin.imbue(locale("chs"));
    wcout.imbue(locale("chs"));
    getline(wcin,ws1);
    getline(wcin,ws2);
    if (ws1.size()!=ws2.size()) {
        wcout<<ws1<<L" 和 "<<ws2<<L" 不对应"<<endl;
        return 1;
    }

    map<wchar_t,wchar_t> m1,m2;
    int n=ws1.size();

    for (int i=0;i<n;i++) {
        if (m1.find(ws1[i])==m1.end() && m2.find(ws2[i])==m2.end()) {
            m1[ws1[i]]=ws2[i];
            m2[ws2[i]]=ws1[i];
        } else {
            if (m1[ws1[i]]!=ws2[i] || m2[ws2[i]]!=ws1[i]) {
                wcout<<ws1<<L" 和 "<<ws2<<L" 不对应"<<endl;
                return 1;
            }
        }
    }
    wcout<<ws1<<L" 和 "<<ws2<<L" 对应"<<endl;
    return 0;
}
ipqtjmqj 2017-02-09
  • 打赏
  • 举报
回复
重定向到文件,十六进制查看器查看编码
qq_19975625 2017-02-08
  • 打赏
  • 举报
回复
代码如下

#include <iostream>
using namespace std;
void main()
{
	cout << "你好" << endl;
	cout << "Hello World" << endl;
	system("pause");
}
小灸舞 2017-02-08
  • 打赏
  • 举报
回复
看看你VS2015的编码是啥,控制台默认是GBK

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧