将vector <char>转换为const char *和string

时间:2016-04-19 12:32:41

标签: c++ string iterator char stdvector

如何将vector转换为const char *?还要串? 这甚至合法吗?

void Printer::Wrap(const CharVector& text, RangeVector& result) const
    //if (TestLineWidth(text.begin(), text.end()))
    int c = 0;
    for (CharVector::const_iterator it = text.begin(); it != text.end(); ++it)
        c++;
    if (TestLineWidth(&text[0], &text[c]))

以下是CharVector和TestLineWidth的声明:

typedef std::vector<char> CharVector;

bool TestLineWidth(const char* from, const char* to) const;

2 个答案:

答案 0 :(得分:2)

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main() {
    vector<char> data = {'h', 'e', 'l', 'l', 'o', '!'};
    cout << string(begin(data), end(data)) << endl;
    return 0;
}

对于const char *,你不能只调用data.data(),因为C-string是空终止的,所以你必须在末尾附加'\ 0'

答案 1 :(得分:-1)

如果你想将字符串转换为char *,你可以使用yourString.c_str() cf C ++文档:http://www.cplusplus.com/reference/string/string/c_str/