当前位置: 首页 > 面试题库 >

在C ++中处理UTF-8

沈运恒
2023-03-14
问题内容

为了找出C ++是否适合我的项目,我想测试UTF-8功能。根据参考,我构建了以下示例:

#include <string>
#include <iostream>

using namespace std;

int main() {
    wstring str;
    while(getline(wcin, str)) {
        wcout << str << endl;
        if(str.empty()) break;
    }

    return 0;
}

但是,当我输入UTF-8字符时,它的行为不正确:

$ > ./utf8 
Hello
Hello
für
f
$ >

它不仅不打印ü,而且立即退出。gdb告诉我没有坠机事故,但出口正常,但是我很难相信。


问题答案:

在Linux上不要使用wstring。

std :: wstring VS std ::
string

看看第一个答案。我确定它能回答您的问题。

  1. 什么时候应该在std :: string上使用std :: wstring?

在Linux上?几乎从不 (§)。

在Windows上?几乎总是 (§)。



 类似资料:
  • 问题内容: 下面是测试程序,包括一个汉字: 以下是结果,请看json.dumps将utf-8转换为原始数字! 为什么这坏了?还是我错了? 问题答案: 您应该阅读json.org。完整的JSON规范在右侧的白框中。 生成的JSON没有错。允许生成器生成UTF-8字符串或纯ASCII字符串,在这些字符串中使用符号转义字符。在您的情况下,Python 模块决定转义,并使用转义符号。 顺便说一句:任何符合

  • 但是现在,当将与预期的序列化对象进行比较时,如果对象中有任何特殊字符,仍然会出现不匹配。默认情况下,方法似乎没有使用UTF-8字符编码。 如何获得UTF-8编码的?

  • 问题内容: 昨天我对一个问题的回答之一是建议我确保我的数据库可以正确处理UTF-8字符。我该如何使用MySQL? 问题答案: 更新: 简短答案-您几乎应该始终使用字符集和排序规则。 更改数据库: 看到: 亚伦对此答案的评论如何使MySQL正确处理UTF-8 utf8_general_ci和utf8_unicode_ci有什么区别 转换指南:https : //dev.mysql.com/doc/r

  • 问题内容: 网络服务器使用utf-8编码提供响应,所有文件都使用utf-8编码保存,我所知的所有设置都已设置为utf-8编码。 这是一个快速程序,用于测试输出是否有效: 该程序的输出为: 呈现为: 我可能做错了什么?我必须告诉DomDocument正确处理utf-8的具体程度是多少? 问题答案: 需要一个HTML字符串。 HTML 根据其规范使用默认的编码(ISO拉丁字母1号)。那是因为更长,请参

  • 我目前正在做一个非常非常重要的学校项目。我需要在C/C中提取WAVE文件的信息,并使用这些信息来获取语音信号的LPC。但是,为了做到这一点,我需要对信号进行一些预处理,例如进行过零和能量分析等。这意味着我需要符号和真实值。问题是我不知道如何获得有用的信息和正确的格式。我已经阅读了文件中的每个字段,但我不确定我做得对不对。请提出建议? 这是我目前读取文件的方式: =fread( 提前谢谢。

  • 我的系统通过SocketChannel接收以0x0D 0x0A结尾的UTF-8线路。我在ByteBuffer中读取数据,如下所示: 缓冲区足够大,可以容纳很多行。但是我不能有一个足够大的缓冲区来容纳所有的行,行是动态处理的。 缓冲区不能包含所有行,因此可以拆分行,编码为一个字节的字符也可以拆分。 我想到了一个解决方案: 通过逐字节分析ByteBuffer(我搜索0x0D 0x0A)来处理我可以提取