我尝试使用字符串的算法排列。如果我输入
,效果会很好void MainWindow::on_algo_clicked()
{
QString letters;
letters = this->ui->myletters->text();
QMessageBox msgbox;
msgbox.setText(letters);
msgbox.exec();
string lettersString = letters.toUtf8().data();
char str[] = "ABC";
int n = strlen(str);
permute(str, 0, n-1);
}
与char str[] = "ABC"
我想把"ABC"通过字母的值(一个qlineedit)。我可以在QMessageBox中显示字母。我尝试了很多转换来转换QString "字母"到一个字符串值(字母)。toUtf8 .to StdString .......),但我总是有一些错误与这部分代码:char str[] = lettersString;
我真的不明白。我在这里和互联网上读了很多话题,但没有任何效果。我肯定我误解了什么。
经过几个小时的研究和大量的尝试,我写了这段代码,它似乎工作,它使我的Qlineedit中的字母排列。
然而,我不明白为什么它的工作,为什么我不能使用c_str或其他解决方案。
如果我不完全理解这个过程,这不是一个好的解决方案。: -)
void MainWindow::on_algo_clicked()
{
QString letters = this->ui->myletters->text();
//QMessageBox msgbox;
//msgbox.setText(letters);
//msgbox.exec();
//string lettersString = letters.c_str();
//std::string lettersString;
QByteArray arraylettersUTF8 = letters.toUtf8();
char* lettersString = arraylettersUTF8.data();
QMessageBox msgbox;
msgbox.setText(lettersString);
msgbox.exec();
//lettersString = letters.toStdString();
char* str = lettersString;
int n = strlen(str);
permute(str, 0, n-1);
}
QString类有一个将对象转换为std::string的方法
这里的doc: https://doc.qt.io/qt-5/qstring.html#toStdString
在有std::string之后,可以调用c_str方法const char* c_str() const ;