我正在尝试制作一种可以吸收用户输入的行,将它们分成 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];
}