#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 也要分别清除