Как читать в файл слово за словом в QT? - PullRequest
0 голосов
/ 17 апреля 2020

Как вы, вероятно, можете сказать, я новичок в QT и пытаюсь импортировать код sr c и заголовки моего консольного приложения в qt для создания GUI. Я застрял на одной конкретной функции, которая должна загрузить файл и прочитать его слово в слово. Я знаю, как сделать это в C ++, но в QT я занимался этим часами, и я не совсем уверен, как это сделать go. Наряду с чтением в файле, я должен вставить строку (или в данном случае тип T), используя мою собственную функцию вставки (не имеет отношения к вопросу).

На данный момент я делаю то, что я знать не работает по причинам конверсии et c:

template <typename T>
bool HashTable<T>::load(const char* filename)
{
    QString word;
    QFile inputFile(filename);
    QTextStream fin(filename);
  //  std::ifstream iss;
    QString line;
  //  iss.clear();
   // iss.open(filename);
    while (fin >> word)
    {
        insert(word);
    }
    fin.close();
    return true;
}

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020
template <typename T>
bool HashTable<T>::load(const char* filename)
{
    QFile inputFile(filename);
    if(!inputFile.open(QIODevice::ReadOnly)) {
        QMessageBox::information(0, "error", inputFile.errorString());
    }

    QTextStream fin(&inputFile);

    while(!fin.atEnd()) {

        QString line = in.readLine();    
        QStringList words = line.split(" ");    
        foreach(QString word, words){
           insert(word); 
        }

    }

    filename.close();
    return true;
}

Вы должны сначала открыть свой файл для чтения. Затем текстовый поток должен читаться построчно. В приведенном выше коде я прочитал строку, а затем разделил ее на слова, используя пробел ("") в качестве токена. Затем вы можете читать слова из списка QStringlist.

0 голосов
/ 17 апреля 2020

QTextStream (насколько мне известно) не поддерживает пословное чтение файлов, оно поддерживает только чтение определенного количества символов (через read(qint64 maxlen)), чтение целых строк (через readLine(qint64 maxlen = 0)) или комбинация вышеперечисленного. Пример того, как это сделать, описан в этом ответе .

. Что вы можете сделать - чтобы получить список слов - это читать построчно и разбивать каждый читать строку с помощью функции QString's split () , используя пробел в качестве разделителя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...