1. ホーム
  2. c++

[解決済み] 二次元ベクター印刷

2022-03-13 16:35:34

質問

2次元の文字列ベクトルをプリントアウトする必要があるんだ。プログラム全体は、txtファイルから行を読み、そこから各単語を異なる要素として格納し、そして、例えば100行を含むベクトルに"単語ベクトル"を押し込む必要があります。すべてうまくいったのですが、問題はベクターを印刷しなければならないときに出てきます。各行は異なる単語数を持つことができます、例えば。

<ブロッククオート

ケーキが好き

たくさん

だから、使えないんです。

for (int i = 0; i < 2; i++)
{
    for (int j = 0; j < 3; j++)
    {
        cout << vec[i][j];
    }
}

というのも、2行目が3つの要素を含んでいないため、プログラムが終了してしまうからです。
何かいい方法はないでしょうか?注:私の講師はC++11を受け入れないので、C++98に基づいた解決策をお願いします。これは私の関数です。

void readline(vector<vector<string> >& lines, int size)
{
    vector<string> row;
    string line, word;
    fstream file;
    istringstream iss;
    int i;

    file.open("ticvol1.txt", ios::in);
    for (i = 0; i < size; i++)
    {
        getline(file, line);
        iss.str(line);
        while (iss >> word) row.push_back(word);
        lines.push_back(row);
    }
}

解決方法は?

ベクターのサイズごとにループさせるのは簡単です。 size() メンバ関数です。

for (int i = 0; i < vec.size(); i++)
{
    for (int j = 0; j < vec[i].size(); j++)
    {
        cout << vec[i][j];
    }
}