- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有 C++ 代码将包含 🜆
( ALCHEMICAL SYMBOL FOR AQUA REGIA ) 的 string
转换为 u16string
:
#include <string>
#include <codecvt>
#include <locale>
using namespace std;
int main() {
setlocale(LC_ALL, "ru_RU.UTF-8");
string s = "🜆";
wstring_convert<codecvt_utf8<char16_t>, char16_t> converter;
u16string s16 = converter.from_bytes(s);
return 0;
}
请注意,我不使用wstring
或任何istream
。
这给了我std::range_error
:
terminate called after throwing an instance of 'std::range_error'
what(): wstring_convert::from_bytes
但是on ideone this code runs without error .
在使用 -std=c++14
编译时,我在 g++ 7.2.0 和 clang 4.0.1 中均收到错误。
为什么在ideone上没有错误,为什么我会收到这个错误?
我有 arch linux 4.12.13,locale
命令给我:
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
...
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
最佳答案
这不就是您的转换器应该有的样子吗?
std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> converter;
关于c++ - 为什么 `wstring_convert` 抛出 range_error?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46262597/
我有 C++ 代码将包含 🜆( ALCHEMICAL SYMBOL FOR AQUA REGIA ) 的 string 转换为 u16string: #include #include #inc
我正在编写一些需要使用系统语言环境在字节字符串和宽字符串之间进行转换的代码。从文件中读取时,这非常容易做到。我可以使用 std::wifstream , 用 std::locale("") 灌输它,
来自 Programming: principals and practices Chapter 4 Drill 1: 编写一个由 while 循环组成的程序(每次围绕loop) 读入两个 int 并
我已经搜索过 SO 和谷歌,我没有在两个地方声明相同的变量,也没有以我知道的奇怪方式包含一些东西。插入方法应该可以正常工作,它是一个预先编写的方法(我想这也可能是错误的..大声笑)。这是我得到的错误。
谁能解释一下 range_error、out_of_range 以及 overflow_error 和 underflow_error 之间的区别是什么,我什么时候应该使用它们?它们看起来都一样。 根
我正在使用 std::wstring_convert 将 wstring 转换为多字节字符串,如下所示: // convert from wide char to multibyte char
我是一名优秀的程序员,十分优秀!