c++ - boost::shared_array<char> 到 std::string

标签 c++ string boost

转换 boost::shared_array<char> 的最佳方法是什么?到 std::string ? 以下代码片段有效,但看起来不是很优雅。

boost::shared_array<char> boostString = DatabaseFileName.GetCString(CZString::eAscii);
std::string stdString;
for(size_t i = 0; boostString[i] != 0; i++)
{
    stdString.append(1, boostString[i]);    
}

最佳答案

Boost shared array使用 new[] 分配它的数据,这意味着它在内存中都是连续的。这意味着您可以获得指向第一个元素的指针作为 C 风格字符串,您可以从中创建一个 std::string 实例。

这当然需要数据有终止符,或者让您知道“字符串”的长度。

关于c++ - boost::shared_array<char> 到 std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43088360/

相关文章:

c++ - 在 [现代] C++ 中通过 N 个变量进行范围/循环

java - 用于将值插入 Db 的字符串格式

c++ - double boost::bind 导致编译时错误

c++ - 获取类中的字段数

c# - 最佳实践 : successfully merge two software?

string - Lua:返回 "{foo}{bar}"的内容

java - 从数组列表中删除一串数据

c++ - (C++) 为什么 boost 作者在这里使用结构而不是类?

c++ - 未找到架构 i386 的 Objective-C 和 C++ 符号

c++ - 填充 C++ 结构 vector 的首选方法