【问题标题】:Convert QSetting value to StdString将字符串值转换为标准字符串
【发布时间】:2012-05-19 11:59:00
【问题描述】:

目前,我在 ini 文件中保存了一个数据,它用于 QSetting 类。我想知道,如何在不使用 qt 的情况下将其转换为 std::string。有谁知道如何确定代码以及如何解码?

我的数据:

 dataID="\x1\0\0\0\xd0\x8c\x9d\xdf\x1\x15\xd1\x11\x8cz\0\xc0O\xc2\x97\xeb\x1\0\0\0Z\xa3\xa3\xc9\x18\xb5>M\xa9=)\xb4\xda\xfb{\xfe\x4\0\0\0\x2\0\0\0\0\0\x3\x66\0\0\xc0\0\0\0\x10\0\0\0|\x16>\x17\x96\xda\xc4-O\xe9\x1f!\\\aAW\0\0\0\0\x4\x80\0\0\xa0\0\0\0\x10\0\0\0\x45\xf4K\x9e\xc2k$\f\xd2\xcbK\b\xf4\xd3\xdf}(\0\0\0\xb2\xb2\xf1\x13[sy\r\xeb\xa7\x96l\x8d\xd7\xa4\xccJ\xf6M\xc1\xf3U3W\xe4\xf7\xa6\x1a\x86s`v\xc2\x8d\x99\xdf!8\xd0G\x14\0\0\0\x35\x93\xeb\xcb\xa9\x16\xadXI\xe6\x46wY\x7f\x32\xb8\xd9\xec\xfb*"

我想做

std::string data = convert(dataID);

convert 是一个纯 c++ 函数

【问题讨论】:

  • 你想获取Qt序列化的数据并在没有Qt的情况下反序列化它?为什么首先用 Qt 序列化它?
  • @ildjarn 可能非 Qt 应用程序需要访问 Qt 应用程序保存的内容,并且可能无法更改其他应用程序。 Agus - 您可以访问 QSettings 的源文件,因此您可以随时查看它是如何在内部解码的。

标签: c++ string qt ini


【解决方案1】:

有没有人知道如何确定代码以及如何解码?

是的,你可以做到。 Read this document.

请记住,QT 以 UTF16 编码将字符串数据存储在数据流中,而 std::string 存储 8 位字符串。因此,您要么需要一些编码转换例程(UTF16->8bit),要么只删除所有非 ASCII 字符。

【讨论】:

    猜你喜欢
    • 2012-01-26
    • 2011-03-31
    • 2010-09-17
    • 2014-02-05
    • 1970-01-01
    • 2019-10-10
    • 2019-01-05
    相关资源
    最近更新 更多