gpt4 book ai didi

c++ - 用于将 std::string 转换为 QString 的包装器?

转载 作者:行者123 更新时间:2023-12-03 12:50:52 24 4
gpt4 key购买 nike

我有QT_NO_CAST_FROM_ASCII已定义,因此我无法从 char* 进行转换到 QString 。以前我一直使用:QLatin1String
但我刚刚注意到QString::fromStdString ,我不喜欢使用这个,因为 QLatin1String优先于QString::fromLatin1 .

有人知道 std::string 的 Qt 对象吗?其工作原理类似于 QLatin1String

最佳答案

对于使用启用了 QT_NO_CAST_FROM_ASCII 的 Qt 的用户,char*std::strings 不能分配给 QString 或转换为 QString

启用 QT_NO_CAST_FROM_ASCII 时将无法编译:

QString foo( "Hello World" );

你可以这样做,但是Qt frowns upon it因为它创建“临时 QString 对象并制作字符数据的深层拷贝”:

QString foo( QString::fromLatin1( "Hello World" ) );

相反,你必须使用:

QString foo( QLatin1String( "Hello World" ) );

如果您需要从 std::string 获取 QString ,那就有点令人沮丧了,因为您现在必须调用:

QString foo( QLatin1String( helloWorld.c_str() ) );

可以直接转换,但不能使用 Qt 推荐的包装器:

QString foo( QString::fromStdString( helloWorld ) );

也就是说,我无法找到 std::stringJKSH 的包装器。 asserts that there isn't one 。因此,我相信从 Qt 5.2 开始,首选解决方案是使用 QLatin1String 包装器。



(对于那些对多语言软件感兴趣的人来说,Qt 的 QLatin1StringQString::fromLaint1 都希望 char* 采用正确的 unicode; QString::fromStdString 实际上在底层使用 QString::fromUtf8 来转换为正确的 unicode。)

关于c++ - 用于将 std::string 转换为 QString 的包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23631925/

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