首页 > 解决方案 > 字符串错误向量

问题描述

以下代码中有一个我没有得到的错误,我尝试调试但没有用。

#include <iostream>
#include <algorithm>
#include <string>

    using namespace std;

    int main()
    {
        int n;

        string s ;
        cin>>s;

        vector<string> v ;

        for (int i=0;i<s.size()-1;i+=2)
        {
            v[i]=s.substr(i,2);
        }

    }

标签: c++stringvectorsubstr

解决方案


有几个问题:

  1. 缺失#include <vector>- 在某些编译器上,没有它它可能会工作。
  2. 向量的大小为零,因此 operator[] 导致分段错误
  3. -1不需要循环内
  4. 即使向量的大小没问题,i也不需要索引,因为它会增加 2,因此您正在跳过元素。

所以它应该是这样的:

for (size_t i=0; i<s.size(); i+=2)
{
    v.push_back(s.substr(i,2));
}

推荐阅读