Как разделить текстовый файл на слова?

Поскольку вы запросили массив записей, вы можете использовать Object.entries :

fb.publicationsCollection
  .doc("pubdata")
  .get()
  .then(res => {
    let pubData = Object.entries(res.data());
    // pubData will look like:
    // [["1892872", {…}], ["1892875", {…}]]
   })

7
задан Erick Robertson 8 October 2012 в 12:59
поделиться

5 ответов

Просто разобравшийся это!! Просто удаленный весь ненужный код.

int main()
{    
    ifstream in("example.txt");
    int LineCount = 0;
    char* str = new char[500];

    while(in)
    {
        LineCount++;
        in.getline(str, 255);
        char * tempPtr = strtok(str," ");
        while(tempPtr)
        {
            AddWord(tempPtr, LineCount);
            tempPtr = strtok(NULL," ,.");
        }
    }
    in.close();
    delete [] str;
    cout<<"Total No of lines:"<<LineCount<<endl;
    showData();

    return 0;
}

BTW исходный проблемный оператор должен был создать индексную программу, которая примет пользовательский файл и создаст индекс строки всех слов.

5
ответ дан 7 December 2019 в 05:30
поделиться

Я не попытался компилировать это, но вот альтернатива, которая почти так же проста как использующий Повышение, но без дополнительной зависимости.

#include <iostream>
#include <sstream>
#include <string>

int main() {
  std::string line;
  while (std::getline(std::cin, line)) {
    std::istringstream linestream(line);
    std::string word;
    while (linestream >> word) {
      std::cout << word << "\n";
    }
  }
  return 0;
 }
3
ответ дан 7 December 2019 в 05:30
поделиться

Попытайтесь переместить Ваш cout<<t2<<end; оператор в Ваш цикл с условием продолжения.

Это должно сделать Ваш код в основном функциональным.

Можно хотеть видеть это подобное сообщение для других подходов.

0
ответ дан 7 December 2019 в 05:30
поделиться

Если бы можно пользоваться библиотеками повышения, я предложил бы использовать повышение:: токенизатор:

Пакет Токенизатора повышения обеспечивает гибкий и простой в использовании путь к повреждению строки или другой последовательности символов в серию маркеров. Ниже простой пример, который разобьет фразу в слова.

// simple_example_1.cpp
#include<iostream>
#include<boost/tokenizer.hpp>
#include<string>

int main(){
   using namespace std;
   using namespace boost;
   string s = "This is,  a test";
   tokenizer<> tok(s);
   for(tokenizer<>::iterator beg=tok.begin();beg!=tok.end();++beg){
       cout << *beg << "\n";
   }
}
0
ответ дан 7 December 2019 в 05:30
поделиться

Существуют примеры как отправленный на всем протяжении Интернета. Вот программа слов количества, которую я записал обратно, когда я был в средней школе. Используйте его в качестве начальной точки. Другие вещи, на которые я хотел бы указать:

станд.:: stringstream: Вы станд.:: getline вся строка, затем используйте станд.:: stringstream, чтобы нарубить его в мелкие кусочки и маркировать его. Можно получить всю строку с помощью станд.:: getline и ввод его в станд.:: строка, которую можно затем передать станд.:: stringstream.

Еще раз это - только пример и не сделает точно, что Вы хотите, чтобы он сделал, необходимо будет изменить его сами, чтобы заставить его сделать то, что Вы хотите, чтобы он сделал!

#include <iostream>
#include <map>
#include <string>
#include <cmath>
#include <fstream>

// Global variables
        std::map<std::string, int> wordcount;
        unsigned int numcount;

void addEntry (std::string &entry) {
        wordcount[entry]++;
        numcount++;
        return;
}


void returnCount () {
        double percentage = numcount * 0.01;
        percentage = floor(percentage + 0.5f);

        std::map<std::string, int>::iterator Iter;

        for (Iter = wordcount.begin(); Iter != wordcount.end(); ++Iter) {
                if ((*Iter).second > percentage) {
                        std::cout << (*Iter).first << " used " << (*Iter).second << " times" << std::endl;
                }
        }

}

int main(int argc, char *argv[]) {
        if (argc != 2) {
                std::cerr << "Please call the program like follows: \n\t" << argv[0] 
                        << " <file name>" << std::endl;
                return 1;
        }

        std::string data;

        std::ifstream fileRead;
        fileRead.open(argv[1]);
        while (fileRead >> data) {
                addEntry(data);
        }
        std::cout << "Total words in this file: " << numcount << std::endl;
        std::cout << "Words that are 1% of the file: " << std::endl;
        returnCount();
}
0
ответ дан 7 December 2019 в 05:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: