【发布时间】:2012-06-27 12:25:12
【问题描述】:
我想将 QString 中的值分配给 const std::string
QString qfile("some value");
这是 const std::string 变量
const std::string file
我正在使用的代码
file = qfile.toStdString();
以上代码适用于普通的 std::string 。但是由于关键字'const'存在一些问题。我该如何解决?
【问题讨论】:
-
有什么解决办法吗?是的:如果你想改变一些东西,不要声明它
const。或者,如果您希望它是不可变的,则不要尝试更改它。 -
可能是 const_cast 但需要您分配给 const 变量的逻辑是什么?也许您应该更新它而不是应用变通方法?
-
@Stefan:
const_cast会使其编译,但尝试修改const对象会产生未定义的行为。 -
请注意
Qt::toStdString()默认将字符串转换为Latin1 编码,因此任何不能用Latin1 表示的字符都会丢失。如果您使用std::string作为文件名,您将无法处理名称中包含特殊字符的文件。您可以使用const std::string file = qFile.toUtf8().constData();代替。但是在 Windows 上,您无论如何都无法使用std::string进行文件操作,因为 Windows 不正确支持 UTF8。 -
@VihaanVerma:你为什么首先声明它
const?我们真的需要知道这一点。
标签: c++ string constants qstring