将std :: string复制到向量<char> </char>的更优雅的方法

时间:2014-04-06 16:18:42

标签: c++

我无法找到答案,如果有重复,请提前抱歉。

是否有更优雅的方式从vector<char>创建string

std::string s("I'm afraid. I'm afraid, Dave.");
std::vector<char> temp;                        
for (size_t x = 0; x < s.size(); x++)          
{                                              
    temp.push_back(s[x]);                      
}  

由于

3 个答案:

答案 0 :(得分:7)

用这样的迭代器构造一个范围:

std::vector<char> temp(s.begin(), s.end());

答案 1 :(得分:0)

使用std::copy()

std::copy( std::begin( string ) , std::end( string ) , std::back_inserter<char>( vector ) );

或者使用std::vector ctor的重载,该范围需要初始化范围:

std::vector<char> vector{ std::begin( string ) , std::end( string ) };

答案 2 :(得分:0)

您可以尝试以下操作:

std::string str = "I'm afraid. I'm afraid, Dave.";
std::vector<char> data(str.begin(), str.end());