如何有效地复制 std::vector到 std::string
这个问题是这个问题的另一面 如何有效地复制 std ::字符串转换为向量
我通常以这种方式复制向量(空终止字符串)
std::string s((char*)&v[0]);
或(如果字符串已经被声明)这样
s = (char*)&v[0];
它完成了工作,但也许有更好的方法。
编辑
C 风格的强制转换很难看,有人告诉我这又如何
s = reinterpret_cast<char*>(&vo[0]);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
只需使用迭代器构造函数:(
编辑):或者使用 char-pointer-plus-size 构造函数:
如果您的字符串以 null 终止并且您想省略终止符,则使用
char*
-构造函数:更新:正如@Dave所说,您可以对 分配 给现有字符串:
Just use the iterator constructor:
(Edit): Or use the char-pointer-plus-size constructor:
If your string is null-terminated and you want to omit the terminator, then use a
char*
-constructor:Update: As @Dave says, you can use the same syntax for assigning to an existing string:
生成的汇编代码行数不到 Visual C++ 2005 中的一半
generates less than half the number of lines of assembly code in Visual C++ 2005 as
您可能会想为什么......因为一旦那些该死的编译器创建者了解标准化的力量,这种方法将比任何其他方法更快......
而且更严重的是:
......可能更安全,而不会损失效率。
You may as why... because once those damn compiler creators understand the power of standarization, this method will be way faster than any other...
And on a more serious note:
... might be safer, without loosing efficiency.