我看到了一些关于将QString转换为std::string的帖子,这应该很简单。但是不知何故我遇到了错误。
我的代码被编译成一个使用cmake的VS项目(我正在使用VS express),所以QT库没有问题,我编写的GUI除了这部分之外都可以工作。
我有一个QComboBox cb
,它保存了一些对象的名称,还有一个QLineEdit lineEdit
,它允许我指定我正在寻找的对象的名称。当我按下go按钮时,它应该运行一个经过测试和工作的函数,并将QComboBox
和lineEdit
的输入作为参数。
以下是当go按钮被点击时的代码:
void gui::on_go_clicked(){
std::string str(cb->currentText().toStdString());
//std::cout << str << "\n";
//QString qstr = lineEdit->text();
//std::cout<<lineEdit->text().toStdString();
updateDB(str, lineEdit->text().toStdString());
}
第一行创建
str
时运作正常,即库函数或toStdString()
没有问题。但是当它执行我的函数时,程序崩溃了,而不是由于函数本身,而是由于尝试转换lineEdit->text().toStdString()
的部分。仅当我在
lineEdit
框中写入单词"test"时才会出现此问题。我看到其他答案谈论Unicode,我简要尝试了一下,但我可以假设用户不会在lineEdit
框中放置任何特殊字符,除了'_'和'.',这些字符不应该是Unicode。
FIND_PACKAGE(Qt4 REQUIRED)
。实际上,我认为我所做的任何事情在QT4和QT5之间都没有区别... - Steve The SquidtoUtf8().constData()
时,它没有起作用,而且我也不想使用它,因为我不需要 Unicode。我只是写了一个 "test"。但现在当我使用toUtf8().constData()
时,它可以正常工作,并且到达我的函数。但是有人知道为什么我不能使用toStdString()
吗?我宁愿保持简单。 - Steve The Squid