c++ - vector<char> 到字符串段错误

标签 c++

试图从一个 vector 中初始化一个字符串。我应该得到“嘿”作为输出。但我得到了“段错误”。我做错了什么?

//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 类开始时的大小为零(默认情况下)。所以这样做会导致未定义的行为。 (在您的情况下,是段错误)

您应该改用 push_back():

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

这会将每个 char 附加到 vector 。

关于c++ - vector<char> 到字符串段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8089307/

相关文章:

c++ - Wt::WFileUpload 文件太大

c++ - 从文件中读取数据并在 C++ 中执行矩阵乘法

c++ - Visual C++ - 将插件 DLL 链接到 EXE?

c++ - 如何打开所有标志?

c++ - 我应该使用指向 std::string 的指针吗

C++ 到 pep/8 汇编语言帮助(链接数据结构)

c++ - 链表的冒泡排序

C++ 保存大数组的最佳方法

c++ - 无法在赋值运算符中访问基类的 protected 方法

C++ rand() 奇怪的行为