社区
工具平台和程序库
帖子详情
请问在标准c++里怎么用cout流输出unicode字符串?
ljhhh0123
2004-04-14 07:36:12
请问在c++.net下这样的程序用unicode编译能正确输出字符串吗?
#include<iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
_TCHAR* me = L"skdfksdjalfksakd";
wout << me << endl;
return 0;
}
...全文
1502
25
打赏
收藏
请问在标准c++里怎么用cout流输出unicode字符串?
请问在c++.net下这样的程序用unicode编译能正确输出字符串吗? #include using namespace std; int _tmain(int argc, _TCHAR* argv[]) { _TCHAR* me = L"skdfksdjalfksakd"; wout << me << endl; return 0; }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
diaojianxiang
2004-07-12
打赏
举报
回复
学习
qiqi162002
2004-07-10
打赏
举报
回复
up
aixuer
2004-07-10
打赏
举报
回复
学习
rorot
2004-07-10
打赏
举报
回复
iconv
peter9606
2004-07-06
打赏
举报
回复
gz
simbas00
2004-07-06
打赏
举报
回复
学习中。。。
expert2000
2004-07-06
打赏
举报
回复
#define UNICODE
#include <iostream>
#include <fstream>
using namespace std;
int main(void)
{
std::wcout.imbue(std::locale("chs"));
wchar_t *me = L"哈哈";
wcout << me << endl;
return 0;
}
在DEV-C++ 4.9.8.0 中编译出错。
`wcout' undeclared in namespace `std'
`wcout' undeclared (first use this function)
为什么?
fuyifan
2004-07-05
打赏
举报
回复
study
oldjackyone
2004-07-05
打赏
举报
回复
偶保持沉默....
看看偶的一个实例:
http://www.cnblogs.com/oldjacky/archive/2004/06/10/14748.aspx
gernal_dn
2004-07-02
打赏
举报
回复
to mailxt():
wchar_t me = L"哈哈"; //wchar_t *me = L"哈哈";
congcongguoke
2004-07-02
打赏
举报
回复
在 叶落知秋 的代码段前头再加上#define UNICODE
#define UNICODE
#include <iostream>
#include <fstream>
using namespace std;
int main(void)
{
std::wcout.imbue(std::locale("chs"));
wchar_t me = L"哈哈";
wcout << me << endl;
return 0;
}
angelboycn
2004-06-12
打赏
举报
回复
wcout
hwndhwnd
2004-06-12
打赏
举报
回复
wcout
unicode用wcout
oldjackyone
2004-06-10
打赏
举报
回复
同意: goodname(叶落知秋)
mailxt
2004-06-10
打赏
举报
回复
#define UNICODE
#include <iostream>
#include <tchar.h>
int main(void)
{
TCHAR me[] = _TEXT("哈哈");
std::wcout << me << std::endl;
return 0;
}
mailxt
2004-06-10
打赏
举报
回复
goodname(叶落知秋)的代码我在.NET 2003下编译通不过啊
: error C2440: “初始化” : 无法从“const unsigned short [3]”转换为“wchar_t”
该转换要求 reinterpret_cast、C 样式转换或函数类型转换
hslinux
2004-06-09
打赏
举报
回复
d:\dotnet\test\test.cpp(16): fatal error C1010: 在查找预编译头指令时遇到意外的文件结尾
这是什么意思?编译下面程序段出的错误。。。
#include "tchar.h" //头文件定义了_TCHAR
#include<iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
_TCHAR* s1 = L"skdfksdjalfksakd";
wcout << s1 << endl;
//使用下面的定义必须包含#include <string>
//wstring s2 =L"1234567890";
//wcout << s2 << endl;
return 0;
}
新自由呼吸
2004-05-08
打赏
举报
回复
看看
HEARTWORD7708
2004-05-08
打赏
举报
回复
还是我来给你们上一课吧。首先按照c99支持unicode字符集,这里指内存中的字符编码,c++当然应该支持,这是毫无疑问的。但是unicode的外部表示如utf7,utf8,utf8n,utf16le,utf16be等等外部存储格式,c++委员会显然没有理由理会这些东西,作为世界上最帅的stl库sgi-stl3.3外带的IO流库认为自己没有义务实现各种各样的字符编码的转换。事实上这样做会导致stl-io库对操作系统的严格区分,结果必然是舍了一群孩子才套了一只狼。所以,sgi-stl声明除了标准的“C”别的一概不予理会。结果是如果我们使用sgi-stl而又不提供新的诸如c_local_stub_win32.cxx这样的基于windows的c-locale底层接口的实现,像goodname那样用什么locale都不管用。说到这里,如果你在使用stl-port,stl-port4.6比sgi-stl的野心大多了,孩子肯定是舍了,狼大约也没套多。我并没有做过stl-port4.6使用其他locale的例子,但我想,他的表现大约会像微软的p.j.先生的stl一样帅吧。bcb6,cbx部署的stl库恰好就是stl-port的某个版本,如果按照goodname的办法不能成功,那么很不幸stlport又少套了一只狼。
如果你在使用ms的p.j.先生的stl,那么你很幸运,因为你想要什么,微软都会给你的。大体上goodname的代码应该行的通。不过正如微软的座右铭:给你需要的,但请不要看明白我是怎么做的。虽然微软公开stl源代码,但我宁愿自己从没有看过那个东西。本人甚至都在怀疑微软使用过什么给这些代码加上1024位的密。使用微软的产品就像生活在Newyork一样:即在地狱又在天堂。
说到这里还没有说到重点,实际上stl-io流在处理内部字符流和外部数据流间的互转换时,使用自带的locale中指定的codecvt*对象,其中的do_in,和do_out实现转换,按照sgi-stl的实现,“c”完成内部的wchar_t和外部的char转换时不会考虑10646更不会考虑其他任何形式的mbcs,事实上c++标准根本就不认识这些东西。所以当你想要输出汉字时,每个汉字的高位都被丢弃,很不爽吧,解决的办法就是继承一个codecvt重写do_in,do_out在里面用psdk的功能完成unicode到mbcs的转换,使用那个代码页管用,你就自己试试吧。
wingfiring
2004-04-15
打赏
举报
回复
有没有那位老大在BCB下面用过wcout?
我在BCB6, cbx下面从来都没有输出成功过。
那位老大能给出BCB下面的解决方法,送200分。
加载更多回复(5)
[
C++
]简单实用的字符转换类
简单的wchar_t 和 char 转换类, 且包含与UTF8的转换 可调用iconv库,或者VC的API char(ansi) <-> wchar_t(
unicode
) char(ansi) <-> char(utf8) char(utf8) <-> wchar_t(
unicode
) 用法: std::
cout
<< CWCharToChar(src, E_CHAR, E_WCHAR).WChar(); std::
cout
<< CWCharToChar(src, E_CHAR, E_UTF8).UTF8(); std::
cout
<< CWCharToChar(src, E_UTF8, E_WCHAR).WChar(); std::
cout
<< CWCharToChar(wsrc, E_CHAR).Char(); std::
cout
<< CWCharToChar(wsrc, E_UTF8).UTF8();
浅析
c++
宏 #val 在
unicode
下的使用
#define CHECK(condition)
cout
<<check failed:<<#condition<<endl; 上面这句宏,当你 CHECK(myfunc()); 时,假设myfunc返回false,会
输出
:check failed:myfunc() 在宏中,#condition 是把参数转换为
字符串
,这在打印log时,可以很方便的打印出函数名称等等 这个大家可能都知道了,太小儿科了,但是,当你在
unicode
下用的时候,很可能会出现乱码 解决的办法是 #condition 替换为 L## #conditon 代码如下:#define CHECK(condition) cou
C++
输出
UNICODE
字符集
VS默认字符编码是ASSCII编码,如果需要在控制台
输出
UNCIODE的字符,就需要另外设置一下,最近一个小伙伴刚好问到我这个问题,于是我总结了一下,并封装了一下。 首先我们需要引入<Windows.h>和<locale>的头文件,然后再main函数中加入setlocale(LC_ALL, ""); 然后需要用TCHAR 来定义字符数组(宽字符),然后重载一下<<运算符即可用
cout
对其打印在控制台显示。下面附上代码。 #include "iostream" #incl
C++
输出
Unicode
字符的正确方法
在linux和windows系统下
输出
Unicode
字符
C++
11新特性6:原生
字符串
和
Unicode
编码支持
C++
11新特性6:原生
字符串
和
Unicode
编码支持
工具平台和程序库
24,854
社区成员
27,343
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章