这分为较小的阶段:
有没有一种快速而优雅的方法来做到这一点?
最佳答案
我能想到的最优雅但可能不是最快的方法是:
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/