c++ - 将输入 txt 文件中比单个单词长的字符串存储到两个单独的数组中

标签 c++

这是一个有点重复的问题,因为我认为我有足够的答案来找到我需要的地方。结果我没有。我有一个 .txt 文件,格式如下,

It is certain
positive
You may rely on it
positive
.
.
.
Very Doubtful
negative

我需要获取此文本文件并将其分成两个单独的数组,一个用于响应,一个用于类别。到目前为止,我已经能够使用 getline 将 .txt 文件分成两个字符串,但我似乎无法将它放入一个数组中。

#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
using namespace std;

int main(){
    int size = 20;
    int i = 0;
    string responses[size];
    string categories[size];
    string line1, line2;

    ifstream infile("responses.txt");
    if(infile.is_open())
    {
        //input
        while(getline(infile, line1) && getline(infile, line2))
        {
                //cout << line1 << endl;
                //cout << line2 << endl
                getline(infile, line1) >> responses[i];
                getline(infile, line2) >> categories[i];
                cout << responses[i] << endl;
                cout << categories[i] << endl;
                ++i;

        }

        infile.close();
    }else
        {
        cout << "File not open" << '\n';
    }
    return 0;
}

我对上面的代码进行了几次不同的迭代和更改,但这是最近的一次。在此先感谢您的帮助或指导。非常感谢这位编程菜鸟。

最佳答案

如果你知道这两个数组的大小(responses.txt 中的行数),试试这个

for(int i=0; i<size_array; i++){
    getline(infile, responses[i]);
    getline(infile, categories[i]);
}

getline(infile, line1) 会将 responses.txt 中的当前行获取到 line1,你不需要在 while() 代码中再次调用 getline()。

如果您不知道 responses.txt 中有多少行,请考虑使用 std::vector 而不是普通数组。

std::vector<std::string> responses, categories;
while(getline(infile, line1) && getline(infile, line2)){
    responses.push_back(line1);
    categories.push_back(line2);
}

关于c++ - 将输入 txt 文件中比单个单词长的字符串存储到两个单独的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53172725/

相关文章:

c++ - SFINAE 和参数数量

c++ - 如何最好地使用抽象基类作为接口(interface)而不重复兄弟类函数重写

c++ - 无法在新安装的 Visual Studio Code 上运行 C++ 代码

c++ - 返回指向在不同线程中更新的 QML 的 C++ 指针

c++ - 为什么具有相同名称但不同签名的多重继承函数不被视为重载函数?

c++ - 为什么不能在 Turbo C++ 的二进制文件中写入全长字符串 (char[])

c++ - 使用 fstream 将文件数据从当前位置保存到文件末尾

c++ - 在函数内部初始化 unsigned char 指针返回空指针

c++ - 在堆栈与堆中没有构造函数的结构/类的初始化

c++ - 使用 Qt : Invalid conversion from const void* to void* while using QList<Type *const>