QstringList 到 Qstring 的转换问题
Posted
技术标签:
【中文标题】QstringList 到 Qstring 的转换问题【英文标题】:QstringList to Qstring conversion issues 【发布时间】:2016-04-21 15:51:15 【问题描述】:我正在使用 qt 框架开发 VS2015。在我的源代码中,我有一个在 GUI 屏幕中打印的功能。 每次需要打印某些内容时都会调用此函数。 它是这样的。
void Trial::Print_MessageBox(QString string)
ui.MessagesScreen->appendPlainText(string);
Cursor_Messagebox.movePosition(QTextCursor::End);
ui.MessagesScreen->setTextCursor(Cursor_Messagebox);
ui.MessagesScreen->ensureCursorVisible();
// Output in MessageBox
void Trial::Print_MessageBox(QFlags<QNetworkInterface::InterfaceFlag> flags)
QString str = QString("Flag %1").arg(flags);
ui.MessagesScreen->appendPlainText(str);
以上功能没有问题,运行良好。
现在我正在尝试读取文本文件。这有一组没有顺序或大小的值。一个例子:
231, 54, 4 \n
47777、2211、676、9790、34236、7898\n
1, 3\n
目标是将这些转换为整数(逐行)并在 GUI 中打印,并将它们(逐行)发送到其他系统。所以我试着用下面的方法来做。
void Trial::ReadFile_Data()
QFile file("input.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
Print_MessageBox("Error in reading File");
return;
QTextStream in(&file);
while (!in.atEnd())
QString line = in.readLine();
Print_MessageBox(line);
int conv = line.toInt();
QString str = QString("%1 %2").arg("Values are: ").arg(conv);
Print_MessageBox(str);
QStringList fields = line.split(",");
file.close();
当我打印“行”时,它只是打印与文件中相同的值。当我进行转换和打印时,我得到一个错误(这是预期的)现在我尝试在 split 的帮助下删除“,”然后我得到 QstringList 我不能使用它,因为我有 Qstring 函数来打印(这不能改变)
我没有从这里得到任何指示。请帮帮我,因为这一直困扰着我。
【问题讨论】:
迭代字符串列表并打印其中的每个字符串 【参考方案1】:很简单……
QStringList::const_iterator constIterator;
for (constIterator = fonts.constBegin(); constIterator != fonts.constEnd();
++constIterator)
cout << (*constIterator).toLocal8Bit().constData() << endl;
fonts 是你的 QStringlist
【讨论】:
更简单:for (const auto& font : fonts) cout << font.toLocal8Bit().constData() << endl;
【参考方案2】:
您的问题简化为“我如何迭代 QStringList
”。
像这样:
// C++11
for (auto field : fields) Print_messageBox(field);
// C++98
foreach (QString field, fields) Print_messageBox(field);
请参阅 here,了解有关如何实施 foreach
又名 Q_FOREACH
的信息。
【讨论】:
以上是关于QstringList 到 Qstring 的转换问题的主要内容,如果未能解决你的问题,请参考以下文章