C++ 字符串向量错误

C++ 字符串向量错误,c++,string,vector,substr,C++,String,Vector,Substr,下面的代码中有一个错误,我没有得到,我尝试过调试,但没有用 #include <iostream> #include <algorithm> #include <string> using namespace std; int main() { int n; string s ; cin>>s; vector<string> v ;

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

#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);
        }

    }

有两个问题:

缺少包含-在某些编译器上,如果没有它,它可能会工作。 向量的大小为零,所以运算符[]导致分段错误 -不需要1 in-loop 即使向量的大小是确定的,也不需要通过i进行索引,因为它增加了2,所以您跳过了元素。 所以应该是这样的:

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

始终在问题中包含您收到的错误消息。和include必须调整向量的大小。您无法访问超出其范围的元素。谢谢,我添加了include,但仍然是相同的结果,并且在运行时没有显示错误。在程序结束时添加cout somthing,并且在调试时,有一个通知说程序接收到信号SIGSEGV,分段错误。在终止之前,它只需花费大量时间运行,而不返回结果。我调整了向量的大小,结果没有什么不同。我添加了它,但没有任何改变。2.我认为这就是问题所在,事实上,我在调试时遇到了分段错误,但是我调整了向量v[100]的大小,但仍然没有任何更改。3. -1是必需的,因为我在每次迭代中使用2个字符,所以最后一次迭代使用2个字符,从最后一个字符之前的字符开始。4.我跳过了元素,这是真的,但我会在以后的程序中填充它们。我只是把程序的一部分放在我有问题的地方。我尝试了你的建议,它奏效了。注意:如果调整向量的大小,则不起作用