【发布时间】:2016-10-12 10:48:07
【问题描述】:
编辑代码和问题
我想将一个字符串(从 .txt 文件中读取的行)拆分为更多字符串:
1 REP615624/1 BYZ12345 90 12.516 20.709
我想放 1在位 零件编号中的 REPxxx BYZxxx 在 byz 90转 12xxx 在 x 20xxx 在 y 依此类推(20.709 以 \n 结束,还有其他行)
我在 C++ 中使用过
std::ifstream leggiROF(nomeFileTxt.c_str()); // apre in lettura il file ROF.txt
while(!leggiROF.eof()) // finché non raggiunge la fine del file
{
getline(leggiROF, posizione, ' '); // legge la riga fino allo spazio e mette contenuto in posizione
getline(leggiROF, partNumber, ' '); // legge la riga fino allo spazio e mette contenuto in part number
getline(leggiROF, byz, ' '); // legge la riga fino allo spazio e mette contenuto in byz
getline(leggiROF, rotazione, ' '); // legge la riga fino allo spazio e mette contenuto in rotazione
getline(leggiROF, x, ' '); // legge la riga fino allo spazio e mette contenuto in coordinata x
getline(leggiROF, y, '\n'); // legge la riga fino allo '\n' e mette contenuto in coordinata y
} // end while
leggiROF.close();
我想在 QT 中转换它。我在努力
void fileTxt::setContaRigheFileTxt(Ui::Dialog *ui)
{
fileName = QFileDialog::getOpenFileName(0, QObject::tr("Apri File"),
"C:\\Users\\Massimo Di Natale\\Documents\\Programmi C++ 11\\Programmi_QT\\Ericsson",
QObject::tr("File ROF (R*.txt)")
if (!fileName.isEmpty()) // se non è vuoto
{
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly))
{
QMessageBox::critical(0, QObject::tr("Errore"), QObject::tr("Non posso aprire questo file"));
return;
} // end if
QTextStream in(&file); // legge il file .txt
while(!in.atEnd()) // finchè non raggiunge la fine del file
{
ui->textEdit->append(in.readLine());
/* WANT TO PUT each part before ' ' in a different string */
// pos=.....
// pNumb=...
// ecc...
/* */
} // end while
file.close(); // chiude il file aperto per la lettura
} // end if
}
但不知道怎么做
【问题讨论】:
-
"but don't work" 是一个可怕的错误描述,请您更准确一点。
-
QString::split()返回QStringList,因此您必须对其进行迭代。您也可以简单地使用operator[]来访问列表中的成员。 -
不是 Qt 特定的,而是相关的:Split a string in C++.
-
抱歉编辑了第一篇文章