boost :: shared_array <char>到std :: string

时间:2017-03-29 08:34:17

标签: c++ string boost

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

std::string

4 个答案:

答案 0 :(得分:3)

Boost shared array使用onConfigurationChanged来分配其数据,这意味着它在内存中都是连续的。这意味着您可以将指向第一个元素的指针作为C样式字符串,从中可以创建new[]实例。

这当然要求数据要么有终结符,要么你知道“字符串”的长度。

答案 1 :(得分:1)

结帐以下代码。这会给你一个清晰的想法:

#include <iostream>
#include <string>
#include <boost\shared_array.hpp>

void main()
{   
    char *ptr = "mystring" ;
    boost::shared_array<char> myIntArray(new char[strlen(ptr) + 1]);
    strncpy(myIntArray.get(), ptr, strlen(ptr) + 1);
    std::string str(myIntArray.get());
    std::cout << str << std::endl;

    system("pause");
}

答案 2 :(得分:1)

如果您不想使用strncpy并且boost::shared_array<char>担心空终止,您可以写(假设boostStringstdString从最初的例子:

std::copy(boostString.begin(), boostString.end(),
    std::back_inserter<std::string>(stdString));

答案 3 :(得分:0)

根据&#34;一些程序员老兄的回答我编写了解决方案。 请注意boostString字符串是零终止的。

boost::shared_array<char> boostString = str.GetCString(CZString::eAscii);
std::string stdStr(boostString.get());