首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将以null结尾的const char*字符串数组转换为std::vector< std::string >

将以null结尾的const char*字符串数组转换为std::vector< std::string >
EN

Stack Overflow用户
提问于 2010-12-17 02:36:54
回答 4查看 3K关注 0票数 12

我有一个Visual Studio2008 C++函数,其中提供了一个以空结尾的字符串数组const char*和该数组中字符串数的计数。

我正在寻找一种将const char*数组转换为std::vector< std::string >的聪明方法

代码语言:javascript
复制
/// @param count - number of strings in the array
/// @param array - array of null-terminated strings
/// @return - a vector of stl strings
std::vector< std::string > Convert( int count, const char* array[] );

Boost很好,STL也很好。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-17 02:42:42

像这样吗?:

代码语言:javascript
复制
vector< string > ret( array, array + count );
票数 15
EN

Stack Overflow用户

发布于 2010-12-17 04:11:03

试试这个:

代码语言:javascript
复制
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>
#include <iostream>


int main(int argc,char* argv[])
{
    // Put it into a vector
    std::vector<std::string>    data(argv, argv + argc);

    // Print the vector to std::cout
    std::copy(data.begin(), data.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
}
票数 4
EN

Stack Overflow用户

发布于 2010-12-17 02:41:39

假设您的函数的签名无意中出错了,您的意思是这样的吗?

代码语言:javascript
复制
#include <algorithm>
#include <iterator>
#include <string>
#include <vector>

std::vector<std::string> Convert(int count, const char **arr)
{
    std::vector<std::string> vec;
    vec.reserve(count);
    std::copy(arr, arr+count, std::back_inserter(vec));
    return vec;
}

int main()
{
    const char *arr[3] = {"Blah", "Wibble", "Shrug"};
    std::vector<std::string> vec = Convert(3, arr);
    return 0;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4464208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档