@@ -739,7 +739,7 @@ fmt::println("UTF-8 下,前四个字节:{}", s.substr(0, 4));
739739
740740```cpp
741741std::u32string s = U"小彭老师公开课万岁";
742- fmt::println("UTF-32 下,前四个字符:{}", s.substr(0, 4));
742+ fmt::println("UTF-32 下,前四个字符:{}", utf8::utf32to8( s.substr(0, 4) ));
743743// 会打印 “小彭老师”
744744```
745745
@@ -755,7 +755,7 @@ fmt::println("UTF-8 下,“公”前的所有字节:{}", s.substr(0, pos));
755755```cpp
756756std::u32string s = U"小彭老师公开课万岁";
757757size_t pos = s.find(U'公'); // pos = 4
758- fmt::println("UTF-32 下,“公”前的所有字符:{}", s.substr(0, pos));
758+ fmt::println("UTF-32 下,“公”前的所有字符:{}", utf8::utf32to8( s.substr(0, pos) ));
759759// 会打印 “小彭老师”
760760```
761761
@@ -772,7 +772,7 @@ fmt::print("UTF-8 下第一个字节:{}", s[0]);
772772
773773```cpp
774774std::u32string s = U"小彭老师公开课万岁";
775- fmt::print("UTF-32 下第一个字符:{}", s[0] );
775+ fmt::print("UTF-32 下第一个字符:{}", utf8::utf32to8(s.substr(0, 1)) );
776776// 会打印 ‘小’
777777```
778778
@@ -1233,8 +1233,8 @@ https://github.com/nemtrif/utfcpp
12331233``` cpp
12341234std::string s = " 你好" ;
12351235std::u32string u32 = utf8::utf8to32(s);
1236- fmt::println ("U+{:04X}", u32[ 0] );
1237- fmt::println("U+{:04X}", u32[ 1] );
1236+ fmt::println ("U+{:04X}", static_cast < std::uint32_t > ( u32[ 0] ) );
1237+ fmt::println("U+{:04X}", static_cast < std::uint32_t > ( u32[ 1] ) );
12381238u32[ 1] = U'坏';
12391239s = utf8::utf32to8(u32);
12401240fmt::println("{}", s); // 你坏
@@ -1248,7 +1248,7 @@ utf8::unchecked::iterator<char *> bit(s);
12481248utf8::unchecked::iterator<char *> eit(s + strlen(s));
12491249for (auto it = bit; it != eit; ++it) {
12501250 // *it: char32_t
1251- fmt::println("U+{:04X}", *it);
1251+ fmt::println("U+{:04X}", static_cast<std::uint32_t>( *it) );
12521252}
12531253
12541254// 安全(带边界检测)的版本
@@ -1257,7 +1257,7 @@ utf8::iterator<char *> bit(s, s, s + strlen(s));
12571257utf8::iterator<char *> eit(s + strlen(s), s, s + strlen(s));
12581258for (auto it = bit; it != eit; ++it) {
12591259 // *it: char32_t
1260- fmt::println("U+{:04X}", *it);
1260+ fmt::println("U+{:04X}", static_cast<std::uint32_t>( *it) );
12611261}
12621262
12631263// 基于 std::string 的版本
@@ -1266,7 +1266,7 @@ utf8::iterator<std::string::iterator> bit(s.begin(), s.begin(), s.end());
12661266utf8::iterator<std::string::iterator> eit(s.end(), s.begin(), s.end());
12671267for (auto it = bit; it != eit; ++it) {
12681268 // *it: char32_t
1269- fmt::println("U+{:04X}", *it);
1269+ fmt::println("U+{:04X}", static_cast<std::uint32_t>( *it) );
12701270}
12711271```
12721272
@@ -1292,7 +1292,7 @@ Utf8Range(T &&t) -> Utf8Range<decltype(std::begin(t))>;
12921292// 以下是新类的使用方法
12931293std::string s = "你好";
12941294for (char32_t c : Utf8Range(s)) {
1295- fmt::println("U+{:04X}", c );
1295+ fmt::println("U+{:04X}", static_cast < std::uint32_t > (c) );
12961296}
12971297```
12981298
@@ -1355,8 +1355,8 @@ for (char c : s.toCharArray()) {
13551355``` cpp
13561356std::u16string s = u" 你好" ;
13571357std::u32string u32 = utf16::utf16to32(s);
1358- fmt::println ("U+{:04X}", u32[ 0] );
1359- fmt::println("U+{:04X}", u32[ 1] );
1358+ fmt::println ("U+{:04X}", static_cast < std::uint32_t > ( u32[ 0] ) );
1359+ fmt::println("U+{:04X}", static_cast < std::uint32_t > ( u32[ 1] ) );
13601360u32[ 1] = U'𰻞';
13611361s = utf16::utf32to16(u32);
13621362fmt::println("{}", s); // 你𰻞
0 commit comments