gpt4 book ai didi

c++ - 交替使用 std::string 和 QString

转载 作者:可可西里 更新时间:2023-11-01 16:31:42 26 4
gpt4 key购买 nike

我在用于图形和 GUI 组件的软件系统中广泛使用 Qt。然而,对于大多数内部算法和数据处理,Qt 扮演的角色较小。

我经常遇到需要将 std::string 转换为 QString 或相反的情况。我的倾向是尽可能多地使用 std::string 并在我需要将字符串传递给 Qt 类(例如那些与文件系统一起使用的类)时使用 QString。

今天早上我在编程时,突然想到在我的代码中散布 std::string 和 QString 可能是一个糟糕的设计。我应该完全切换到 QString 吗?还有其他人遇到过这种设计选择吗?

Qt 提供了很多与 STL 相同的功能,但我仍然犹豫要不要完全切换,因为 Qt 不够标准化和稳定。

最佳答案

是的,我以前遇到过这种情况。我开发的程序始终使用 Qt,但我必须将它连接到需要 std::string 的库。 QString 的好处是它明确使用 Unicode,而 C++ 标准库不保证编码。

解决方案是在这个库的边界转换

QString toQString(std::string const &s)
{
return QString::fromUtf8(s.c_str());
}

std::string fromQString(QString const &s)
{
return std::string(s.toUtf8().data());
}

因为库生成了包含 UTF-8 的 std::string

您似乎想要的恰恰相反:始终使用 std::string 并在 Qt 边界进行转换。这似乎完全没问题;它比总是使用 QString 需要更多的工作,但是当你需要一个非 QString 接受的库时,你将不得不付出努力,而你的非GUI 组件不依赖于 Qt(欢呼!)。

关于c++ - 交替使用 std::string 和 QString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6138068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com