这个问题源于《C++ Primer第五版》上的一道练习:
编写一个程序,将指向char*指针列表的元素分配给C风格的字符字符串,然后将它们存储在一个string类型的向量中。
----------------原始问题------------
首先我尝试了以下比较直接的方法:
vector<char *> vec = {"Hello", "World"};
vec[0][0] = 'h';
但编译代码时我收到了一个警告:
temp.cpp:11:43: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
vector<char *> vec = {"Hello", "World"};
^
当我运行./a.out时,我得到一个
Segmentation fault (core dumped)
我认为是因为我试图写入 const char。所以我尝试另一种方式:
char s1[] = "Hello", s2[] = "World";
vector<char *> vec = {s1, s2};
vec[0][0] = 'h';
这次没有问题。但是似乎有点繁琐。有没有其他更优雅的方式用字符串字面量初始化一个向量?
std::vector<std::string>
(可以从字符串字面值构造std::string
)。演示链接 - Borgleaderstd::vector<std::string> vec(argv, argv + argc);
只需要传入一些命令行参数 ;) - Borgleader