gpt4 book ai didi

c++ - Qt 字符串函数之间的区别

转载 作者:行者123 更新时间:2023-11-30 01:52:52 26 4
gpt4 key购买 nike

我用 Qt -4.7.4 版本在 VS2005 上做了一个项目。在那个项目中,我使用了 lineEdit 并像这样从 lineEdit 中获取文本

const char* test= lineEdit->text().toStdString().c_str();

上面的代码行完美运行,但现在我使用的是 VS2010 并使用上面相同的代码行,但它没有显示任何关于 test 变量的信息。

qDebug()<<lineEdit->text()<<endl;

上面的行打印了 lineEdit 的正确值,但是当我使用 std::string 然后使用 cout 时。它在 VS2010 上没有显示任何值。所以我用了

const char* test= lineEdit->text().toLatin1().data();

上面这行现在向我展示了 VS2010 上的所有内容。

我不知道为什么 const char* test= lineEdit->text().toStdString().c_str();VS2005 上完美运行,为什么不呢在 VS2010 上。

最佳答案

来自 Qt documentation

This operator (QString::toStdString()) is only available if Qt is configured with STL compatibility enabled.

所以我猜 VS2005VS2010 之间存在一些配置问题。

作为旁注:

您不应该使用 c_str() 返回的指针并使用它。如果 QString 发生变化或超出范围QString::toStdString() 返回的std::string 也会发生变化,指针无效。如果您通过复制它在其他地方使用该指针,您将有未定义的行为。最好从 text() 属性创建一个 std::string/QString 对象,然后使用它。

关于c++ - Qt 字符串函数之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23883521/

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