[英]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.