【发布时间】:2014-12-02 09:17:33
【问题描述】:
我正在开发一个 HTTP 客户端模块,该模块在字符缓冲区中接收来自服务器的信息,并且是 UTF-8 编码的。我想从这个字符缓冲区创建一个 std::string 对象。
我可以像这样通过字符缓冲区直接创建一个字符串对象吗?
std::string receivedstring(receievedbuffer,bufferlength);
这里的receievedbuffer 是char[] 数组,它包含从TCP/IP 连接接收到的数据,bufferlength 包含接收到的字节数。我真的对 UTF-8 这个词感到困惑,我知道它是一种 unicode 编码,在转换之前我是否需要采取任何步骤。
【问题讨论】:
-
那么,接下来你要对字符串做什么?你想如何存储这个文本?您希望在内部使用哪种编码?
-
@BasileStarynkevitch :这意味着我需要先检查字符缓冲区以检查它是否包含有效的 UTF-8 ,然后我可以继续正常的字符串操作而不必担心编码对吗?
-
是的。正常的字符串操作适用于经过验证的 UTF-8。然后,如果您决定每个 Unicode 字符串都以 UTF-8 表示(但不是例如 UTF-16),那么您可以继续。但是你需要阅读更多关于 UTF-8 的内容。
-
@DavidHeffernan:我将在内部传递提取的 HTTP 标头。据我了解,UTF-8 编码可以正常工作。
标签: c++ unicode encoding utf-8