マージ入力ストリーム
タイトルはシンプルですが、容易ではないが何を(私はダムであってもよいし、訓練し、訓練を受け、訓練を受けました)
アイデア:質問ので、私たちは、ベクター中に、それぞれ、最初のオープン空間分割に応じて、2つの文字列を入力しますので、我々はいくつかの点に注意を払う必要があり、入力はスペースで区切って言った:
1、文字列1がされています出力端は、ストリング2の出力端ではない
2、ストリング2の出力端ではなく、出力端
ここでは、コードは次のようになります。
#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;
}