这分为较小的阶段:

  • 如何计算 vector 中所有字符串的总长度?
  • 分配char * mem空间
  • 将 vector 字符串复制到该空间中

  • 有没有一种快速而优雅的方法来做到这一点?

    最佳答案

    我能想到的最优雅但可能不是最快的方法是:

    std::string s = std::accumulate(v.begin(), v.end(), std::string());
    char * c = new char[s.size() + 1];
    std::strcpy(c,s.c_str());
    

    尽管我不是狂热的动态分配的拥护者,而且我个人从不使用它,但我还是把它留给您解决。

    如果需要在元素之间添加一个空格分隔符,它将变得更加复杂,我可能会使用其他解决方案,例如:
    std::ostringstream oss;
    std::copy(v.begin(), v.end(), std::ostream_iterator<std::string>(oss," "));
    size_t sz = oss.str().size();
    if(sz) --sz; // truncate trailing space if there is one
    char * c = new char[sz+1];
    std::copy_n(oss.str().c_str(), sz, c);
    c[sz] = 0;
    

    关于c++ - 如何以优雅/快速的方式将STL字符串 vector 转换为char *?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7018357/

    10-09 08:20
    查看更多