矢量<char>到字符串分段错误

vector<char> to string segmentation fault

本文关键字:分段 字符串 错误 char lt 矢量 gt      更新时间:2023-10-16

尝试从vector对象初始化string对象。我应该得到"hey"作为输出。但我有"分割错误"。我做错了什么?

//write a program that initializes a string from a vector<char>
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main ()
{
    vector<char> cvec;
    cvec[0]='h';
    cvec[1]='e';
    cvec[2]='y';
    string s(cvec.begin(),cvec.end());
    cout<<s<<endl;
    return 0;
}

vector类的初始大小为0(默认情况下)。这样做会导致未定义行为。(在您的情况下,是分段错误)

你应该用push_back()代替:

vector<char> cvec;
cvec.push_back('h');
cvec.push_back('e');
cvec.push_back('y');

这将把每个char附加到向量上。

您需要在向量中分配空间,如下所示:

vector<char> cvec(3);

或者将字符一个一个推入:

vector<char> cvec;
cvec.push_back('h');
cvec.push_back('e');
cvec.push_back('y');