尝试从向量初始化字符串.我应该把"嘿"作为输出.但我得到了"分段错误".我做错了什么?
//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;
}
Run Code Online (Sandbox Code Playgroud)
Mys*_*ial 21
向量类的大小为零(默认情况下).这样做会导致未定义的行为.(在您的情况下,分段错误)
您应该使用push_back():
vector<char> cvec;
cvec.push_back('h');
cvec.push_back('e');
cvec.push_back('y');
Run Code Online (Sandbox Code Playgroud)
这会将每个附加char到向量.
Joh*_*nck 11
您需要在向量中分配空间,如下所示:
vector<char> cvec(3);
Run Code Online (Sandbox Code Playgroud)
或者逐个推送角色:
vector<char> cvec;
cvec.push_back('h');
cvec.push_back('e');
cvec.push_back('y');
Run Code Online (Sandbox Code Playgroud)