- Windows下在涉及到双字节型的输出问题上慎用wcout,特别是在codeblocks中和linux中使用的是gcc编译器的。
- 我们一般可以使用c中的wprintf来打印双字节型,已在codeblocks中试验过,同时需要更改一个参数:setting——compiler and dubug—— other options,添加-finput-charset=GBK,之后在codeblocks中就可以使用wchar_t这个类型了。
#include <stdio.h> #include <stdlib.h> #include <wchar.h> #include <locale.h> int main() { setlocale(LC_ALL,"chs"); wchar_t w[]=L"中"; wprintf(L"%ls",w); return 0; }
- Linux下涉及宽字节型的输出:这个版本是用c实现的
其中setlocale需要设置成本地的编码格式,在linux中可以使用locale命令来查看本地的编码格式。而在windows中可以在dos下面使用chcp命令来查看。#include <stdio.h> #include <stdlib.h> #include <locale.h> #include <wchar.h> int main(void) { wchar_t w[] = L"Out中文"; setlocale(LC_ALL, "zh_CN.UTF-8"); wprintf(L"%ls/n", w); return 0; }
- Linux下面也可以使用c++来实现:当然不要忘了编译c++文件的是用g++命令的
#include <iostream> #include <string> #include <locale> using namespace std; int main(void) { wstring w = L"Out中文"; ios_base::sync_with_stdio(false); wcin.imbue(locale("zh_CN.utf8")); wcout.imbue(locale("zh_CN.utf8")); wcout << w << endl; }
打印双字节型慎用wcout
最新推荐文章于 2022-11-16 18:38:57 发布