Поскольку вы запросили массив записей, вы можете использовать Object.entries
:
fb.publicationsCollection
.doc("pubdata")
.get()
.then(res => {
let pubData = Object.entries(res.data());
// pubData will look like:
// [["1892872", {…}], ["1892875", {…}]]
})
Просто разобравшийся это!! Просто удаленный весь ненужный код.
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 исходный проблемный оператор должен был создать индексную программу, которая примет пользовательский файл и создаст индекс строки всех слов.
Я не попытался компилировать это, но вот альтернатива, которая почти так же проста как использующий Повышение, но без дополнительной зависимости.
#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;
}
Попытайтесь переместить Ваш cout<<t2<<end;
оператор в Ваш цикл с условием продолжения.
Это должно сделать Ваш код в основном функциональным.
Можно хотеть видеть это подобное сообщение для других подходов.
Если бы можно пользоваться библиотеками повышения, я предложил бы использовать повышение:: токенизатор:
Пакет Токенизатора повышения обеспечивает гибкий и простой в использовании путь к повреждению строки или другой последовательности символов в серию маркеров. Ниже простой пример, который разобьет фразу в слова.
// 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"; } }
Существуют примеры как отправленный на всем протяжении Интернета. Вот программа слов количества, которую я записал обратно, когда я был в средней школе. Используйте его в качестве начальной точки. Другие вещи, на которые я хотел бы указать:
станд.:: 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();
}