从文件读取字符串向量? C ++

时间:2014-07-11 01:52:06

标签: c++11

好的,我是这方面的新手,这就是我一直坐在这里一会儿挠头做的事。

我的目标是从命令行参数读取文件,并将文件内容存储在数组字符串中,每个元素都是文件中的一行。我需要包括空格在内的整条线。我需要循环遍历整个文本文件,而不知道它有多大/多小。

我很确定key.eof()在这里是不对的,但我现在尝试了很多东西,我需要寻求帮助,因为我觉得我越来越远离解决方案。

ifstream key(argv[2]);
if (!key) // if file doesn't exist, EXIT
{
    cout << "Could not open the key file!\n";
    return EXIT_FAILURE;
}
else
{
    vector<string> lines;

    for (unsigned i = 0; i != key.eof(); ++i)
    {
        getline(key, lines[i]);
    }

    for (auto x : lines)
        cout << x;

如果有人能指出我正确的方向,这只是我必须做的事情的乞讨,如果感到无能为力。我的目标是能够将每一行分解为包含空格的字符向量(或我需要的任何内容)。

2 个答案:

答案 0 :(得分:1)

我想你想要这样的东西:

vector<string> lines;

string line;    
while(getline(key, line)) // keep going until eof or error
    lines.push_back(line); // add line to lines

答案 1 :(得分:0)

要从文件中连续读取行并将其保存在数组中,我会使用while循环而不是for循环来执行此类操作。

int counter = 0;
while (getline(key, lines[counter]) {
    counter++;
}