我正在尝试制作一种可以吸收用户输入的行,将它们分成 vector 形式的字符串,然后一次打印一次(每行8条)。
到目前为止,这是我所拥有的:

#include <iostream>
#include <vector>
#include <string>
#include <sstream>

int main(void)
{
    using namespace std;

    vector<string> svec1;
    string temp;
    while(getline(cin, temp)) //stores lines of text in temp
    {
        if(temp.empty()) //checks if temp is empty, exits loop if so.
            break;
        stringstream ss(temp);
        string word;
        while(ss >> word) //takes each word and stores it in a slot on the vector svec1
        {
            svec1.push_back(word);
        }
    }
}

我一直坚持让它一次打印8张,而我尝试过的解决方案总是使下标超出范围错误。

最佳答案

像这样:

for(int i = 0; i < svec1.size(); i++)
{
    cout << svec1[i];
    if ((i+1) % 8 == 0)
        cout << endl;
    else
        cout << " ";
}



编辑:
上面的解决方案最后输出额外的空间/换行符。可以通过以下方式避免这种情况:
for(int i = 0; i < svec1.size(); i++)
{
    if (i == 0)
        /*do nothing or output something at the beginning*/;
    else if (i % 8 == 0)
        cout << endl; /*separator between lines*/
    else
        cout << " "; /*separator between words in line*/
    cout << svec1[i];
}

07-24 18:40