简体   繁体   English

向量 <char> 字符串分段错误

[英]vector<char> to string segmentation fault

trying to initialize a string from a vector. 尝试从向量初始化字符串。 I am supposed to get "hey" as the output. 我应该把“嘿”作为输出。 but I got "segmentation fault". 但我得到了“分段错误”。 what did I do wrong? 我做错了什么?

//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;
}

The vector class starts out with a size of zero (by default). 向量类的大小为零(默认情况下)。 So doing that will cause undefined behavior. 这样做会导致未定义的行为。 (in your case, a segmentation fault) (在您的情况下,分段错误)

You should use push_back() instead: 你应该使用push_back()代替:

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

This will append each char to the vector. 这会将每个char附加到向量。

You need to allocate space in the vector, like this: 您需要在向量中分配空间,如下所示:

vector<char> cvec(3);

Or push the characters in one by one: 或者逐个推送角色:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM