合并输入流
题目很简单,但是做对很不容易(我可能太笨了,嘤嘤嘤)
思路:因为题中说的输入使用空格隔开的,所以我们将输入的两个字符串,先根据空格分割开来,分别存入vector,接下来就要注意几点:
1、字符串1已经输出结束,但是字符串2没有输出结束
2、字符串2输出结束,但是1没有输出结束
以下是代码:
#include <iostream>
#include <stdlib.h>
#include <vector>
#include <string>
using namespace std;
vector<string> Splict(string str, string s)
{
str += s;
vector<string> v;
int pos = str.find(s);
while (pos!= string::npos)
{
string ret = str.substr(0, pos);
v.push_back(ret);
str = str.substr(pos + 1); //str为pos+1后面的字符串
pos = str.find(s);
}
return v;
}
int main()
{
string str1;
string str2;
getline(cin, str1);
getline(cin, str2);
vector<string> v1;
v1=Splict(str1, " ");
vector<string> v2;
v2 = Splict(str2, " ");
int flag = 0;
for (int i = 0, j = 0; i < v1.size();)
{
for (int k = 0; k < 4; k++)
{
cout << v1[i++] << " ";
if (i >= v1.size())
{
flag = 1; //说明v1已经输出完了
break;
}
}
if (j >= v2.size()) //判断v2是不是比v1先输出完成,否则会发生断错误
{
for (; i < v1.size();)
{
cout << v1[i++] << " ";
}
break;
}
if (flag) //v1已经输出完了,判断v2是否已经输出结束
{
for (;j < v2.size();)
{
cout << v2[j++] << " ";
}
}
else
cout << v2[j++] << " ";
}
system("pause");
return 0;
}