大神们帮忙看看下面这段代码为何报错(char16_t问题)
c++吧
全部回复
仅看楼主
level 3
ytskuh
楼主
初次尝试char16_t,结果这种问题怎么也解决不了,望大家指教
2017年02月04日 02点02分
1
level 3
ytskuh
楼主
我就是不知道怎么使用char16_t和char32_t
2017年02月04日 02点02分
2
level 3
ytskuh
楼主
并且,就算我使用wchar_t,尽管能通过编译,但是
程序运行错误。代码和情况如下
2017年02月04日 02点02分
3
level 16
◆心之刃◆
1、不能从cin直接读char16_t,先读进string里再转码。
2、编译器不支持"chs" locale。
2017年02月04日 05点02分
5
level 3
ytskuh
楼主
嗯,确实不支持,那如何解决呢
2017年08月09日 06点08分
13
level 12
Pumpkin_233
(cpp11)
第一 你不能直接读取char16_t 得先从char传(我记得有头文件封装了utf8toutf16的转换)或用io模板弄个char16_t的io
2017年08月09日 22点08分
14
夏威姨2014
你猜猜iostream的构造函数的访问规则是什么
?
2017年08月10日 03点08分
Pumpkin_233
@夏威姨2014
我第二条指的是basic_istream和basic_ostream以及basic_iostream模板类
2017年08月11日 00点08分
夏威姨2014
@Pumpkin_233
io模板的构造函数都是private的
2017年08月11日 03点08分
level 9
夏威姨2014
用wcin和wcout
2017年08月10日 03点08分
15
level 12
Pumpkin_233
(C++11)
想起来<codecvt>有个std::codecvt_utf8_utf16
这玩意能让UTF8和UTF16互转
转换之后你就能用std::cout了(不过 你得用一个srd::string或char*来存储转换后的字符串)(你的控制台编码必须是utf8不然会乱码)
2017年08月11日 12点08分
16
Pumpkin_233
具体看这个
https://blog.poxiao.me/p/unicode-character-encoding-conversion-in-cpp11/
2017年08月11日 12点08分
level 3
ytskuh
楼主
感谢解答,加以修改后能够通过编译。
但是看起来标准输出流似乎并不支持其输出(输出了字符所对应的数字),这又该如何处理呢
此外,介于这个问题,顺便问一下介于char和string可以接受中文字符,这是不是意味着可以直接使用string来处理中文呢?但实际操作中又时常出现乱码现象,我估计是因为中文错位了1个字节导致的,这又该如何解决呢
萌新期待指点
2017年08月23日 06点08分
17
1