vector存放切割字符串报错,测试用例个数为奇数或偶数报错

#include <bits/stdc++.h>
#include <string>
using namespace std;
int main()
{
    string s;
    while(getline(cin,s))
    {
        vector<string> data;
        for(int i=0;i<s.size();i++)
        {
            int pos=i,cnt=0;
            while(s[i]!=' ')
            {
                i++;
                cnt++;
            }
            data.push_back(s.substr(pos,cnt));//奇数个AC  偶数个参数报错 数组越位 测试用例:xcopy /s c:\\ d:\\
            //data.push_back(s.substr(pos,cnt++));//反之 偶数AC  奇数报错
        }
        for(auto it:data) cout<<it<<endl;
    }
    return 0;
}

        data.push_back(s.substr(pos,cnt));//奇数个AC  偶数个参数报错 数组越位 测试用例:xcopy /s c:\\ d:\\
        //data.push_back(s.substr(pos,cnt++));//反之 偶数AC  奇数报错

while(s[i]!=' ' )改成while(s[i]!=' ' && i < s.size()) 否则s[i]会越界

搞定了 添加个string 做后置赋值 比substr()更容易看出问题 也排除了substr()参数的错误
就是while的终结条件没有写完整 加个i<s.size()就AC了