首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::string,std::wstring和UTF8

std::string,std::wstring和UTF8
EN

Stack Overflow用户
提问于 2016-01-31 22:11:34
回答 2查看 1.5K关注 0票数 1

我想使用编码在UTF-8中的字符串(很抱歉,如果这是一个糟糕的措辞,请纠正我,以便我理解什么是正确的)。另外,我希望我的程序是跨平台的。

IIUC,正确的方法是使用std::wstring,然后将其转换为UTF8。问题是,我认为在Linux::string上已经用UTF8编码了(我可能错了)。

那么,用最少的条件代码创建std::{w}字符串的UTF8表示最好的方法是什么?

字符串是常量,它们是硬编码的,它们将用于SQLite查询。

P.S.:我将尝试使用XCode 5,希望它符合C++11。

EN

回答 2

Stack Overflow用户

发布于 2016-02-01 01:02:48

它们是硬编码的。

如果所讨论的所有字符串都是硬编码字符串,那么您不需要任何特殊的内容。

在声明这样的字符串时使用u8前缀将确保它们是用UTF-8编码的。在支持C++11这个特性的每个平台上,这类字符串的类型都是const char [],就像常规字符串文本一样:

代码语言:javascript
复制
const char my_utf8_literal[] = u8"Some String.";

当然,它们也可以存储在std::string (而不是wstring)中:

代码语言:javascript
复制
std::string my_utf8_string = u8"Some String.";

您说过,您的目标是在SQLite查询和命令中使用它们。在这种情况下,让一切正常运转应该是相当容易的。您将使用SQLite的字符串格式命令来构建查询,尽管查询对UTF-8视而不见,但只要所有输入都是UTF-8,输出也将是有效的UTF-8。所以不应该有任何问题。

票数 4
EN

Stack Overflow用户

发布于 2016-06-03 11:53:47

对于UTF-8处理,有一个名为微型-utf8 8的库。它为std::string或更具体的std::u32string (::value_type是char32_t,但数据表示是带有char的utf8 )提供了一个插入替代,这或多或少是C++11中处理utf8的最简单的方法。

字符串是常量,它们是硬编码的,它们将用于SQLite查询。

如果您有硬编码的字符串,您只需将源文件的编码更改为UTF8,并将U-prefix放在字符串文字的前面,然后可以构造一个utf8_string类来处理它。

那么,用最少的条件代码创建std::{w}字符串的UTF8表示最好的方法是什么?

如果可以的话,就不要使用wchar_t和wstring,因为它们可能是C++字符串库中最模糊的和特定于平台的东西。

我希望这至少能帮上一点忙。

干杯,雅各布

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35120164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档