【问题标题】:Qt std::string to QString with special charactersQt std::string 到带有特殊字符的 QString
【发布时间】:2020-07-10 15:31:33
【问题描述】:

我有 Qt5 (5.7),我正面临一个奇怪的问题。 我无法通过以下简单方法将 std::string(测试算法的输出)转换为 QString。

有人有想法吗?

这是我测试过的简单示例(这些行都不起作用...)。每次 Visual Studio 观察者给我重读字母的未知字符时。

std::string l_s = "&é'(-è_çà)=";
QString l = QString::fromUtf8(l_s.data(), l_s.size());
QString lll = QString::fromStdString(l_s);

QByteArray l_ba = QString::fromStdString(l_s).toUtf8();

QString l_t = "&é'(-è_çà)=";
std::string res = l_t.toStdString(); // here I lost information

QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QString ss = codec->toUnicode(l_s.c_str());

【问题讨论】:

  • 类似&Ú'(-Þ_þÓ)=?此解决方案可能适合您:stackoverflow.com/questions/15531105/…
  • 感谢您的回复。我已经测试了这个解决方案但没有成功。我拥有的字符串存储在 std::string 中。

标签: c++ qt utf-8


【解决方案1】:

这对我有用。在 Linux 系统中。使用 Qt 5.6.0:

#include <QString>

#include <iostream>
#include <string>

int main()
{
    std::string str = "&é(-è_çà)=";
    std::cout << "std::string: " << str << std::endl;

    QString qstr = QString::fromStdString(str);
    std::cout << "QString: " << qstr.toStdString() << std::endl;

    return 0;
}

输出:

std::string: &é(-è_çà)=
QString: &é(-è_çà)=

【讨论】:

  • 谢谢。当字符串直接写入初始化时它可以工作,但有时当字符串来自算法的输出时不起作用。
  • @Joh 你能提供一个使用该算法的代码示例吗?
猜你喜欢
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多