从文本文件初始化向量

Initializing a vector from a text file

本文关键字:向量 初始化 文件 文本      更新时间:2023-10-16

我正在尝试编写一个可以在文本文件中读取的程序,并将其中的每个单词存储为字符串类型向量中的条目。我确信我这样做非常错误,但是自从我尝试这样做以来已经太久了,以至于我已经忘记了它是如何完成的。任何帮助将不胜感激。提前谢谢。

法典:

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int main()
{
    vector<string> input;
    ifstream readFile;
    vector<string>::iterator it;
    it = input.begin();
    readFile.open("input.txt");
    for (it; ; it++)
    {
        char cWord[20];
        string word;
        word = readFile.get(*cWord, 20, 'n');
        if (!readFile.eof())
        {
            input.push_back(word);
        }
        else
            break;
    }
    cout << "Vector Size is now %d" << input.size();
    return 0;
}

许多可能的方法之一很简单:

std::vector<std::string> words;
std::ifstream file("input.txt");
std::string word;
while (file >> word) {
    words.push_back(word);
}

运算符 >> 只处理被空格(包括换行符)除以的单词。


如果您要按行读取它,您可能还需要显式处理空行:

std::vector<std::string> lines;
std::ifstream file("input.txt");
std::string line;
while ( std::getline(file, line) ) {
    if ( !line.empty() )
        lines.push_back(line);
}
#include <fstream>
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
    vector<string> input;
    ifstream readFile("input.txt");
    copy(istream_iterator<string>(readFile), {}, back_inserter(input));
    cout << "Vector Size is now " << input.size();
}

或者,更短:

int main()
{
    ifstream readFile("input.txt");
    cout << "Vector Size is now " << vector<string>(istream_iterator<string>(readFile), {}).size();
}

我不打算解释,因为关于StackOverflow已经有无数的解释:)