[C++ 学习] C++ Primer 习题 4.34 4.35

来源:互联网 发布:linux shell编程书籍 编辑:程序博客网 时间:2024/05/19 17:52

需要注意以下知识点:

 

1. 动态数组要记得  delete [] ,别忘了.

 

2.strcpy在拷贝的时候,已经包括最后面的  \0 了.

相当于 strncpy,不拷贝最后的 \0,然后在最后再补一个 \0

 

3.string::c_str() 返回的时一个 const char *,是C风格字符串的地址.

 

#include<iostream>#include<string>#include<vector>using std::string;using std::vector;using std::cin;using std::cout;using std::endl;int main(){string strTemp;vector<string> vecStr;//catch input string ,save them to vectorwhile(cin>>strTemp){vecStr.push_back(strTemp);}//save vector to string[] pArrconst int arr_size = vecStr.size();string *pArr = new string[arr_size];size_t i=0;for(vector<string>::iterator it = vecStr.begin();it!=vecStr.end();++it){pArr[i] = *it;i++;}delete [] pArr;//don't forget !//create array of char pArr = new string[arr_size];//relocate memeoryi = 0;for(vector<string>::iterator it = vecStr.begin();it!=vecStr.end();++it){char *p = new char[(*it).size()+1];strcpy(p,(*it).c_str());pArr[i] = p;i++;}//outputfor(i=0;i<arr_size;i++){cout << pArr[i] << endl;}delete [] pArr;//don't forget !return 0;}


 

原创粉丝点击