(C++)将string型vector中的元素复制到char型数组中。。出错!

来源:百度知道 编辑:UC知道 时间:2024/06/01 15:52:16
#include <iostream>
#include <string>
#include <vector>
#include <cstring>

using namespace std;

int main()
{
string word;
vector<string> text;
while (cin >> word) {
text.push_back(word);
}
char *p = new char[text.size() + 1];
for (vector<string>::iterator ix = text.begin();
ix != text.end();
++ ix){
strcpy(p,(*ix).c_str());
p++;
}
*p = '\0';
for (vector<string>::iterator cit = text.begin();
cit != text.end(); ++cit)
cout << *cit;
cout << endl;
cout << p;
delete [] p;
return 0;
}

编译可以通过,找了半天不知错在哪。。请点拨一下!谢谢啦!

1、把word转换为其他字符组合,因为windows下word是一种数据类型,会有风险;
2、 char *p = new char[text.size() + 1];这句有错误,请楼主查阅vector的size()方法返回值代表的是什么。最笨的方法就是在vector中逐个string的长度相加获得字符串的长度,最后要加1.

char *p = new char[text.size() + 1];
你要把vector内每个string的内容复制到 p ,这样定义又是什么意思?
你是不是想
char *p[] = new char[text.size() + 1]; ?
如果这样,p的每个元素也要单独分配空间 ,而且后来 delete 也要分别清除