#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
vector<string> ivec;
ivec.push_back("Hello world");
ivec.push_back("Hello everybody!");
ivec.push_back("Hello my family!");
vector<string>::size_type size = ivec.size();
vector<string>::iterator itr = ivec.begin();
vector<string>::iterator end = ivec.end();
vector<string>::size_type vSize = ivec.size(); // vector的大小
char **chars = new char*[vSize]; // 动态分配字符指针数组
// 赋值操作左边有两个星号可理解为chars本身的元素是一个char*型,
// new操作符又返回了一个指针指向字符数组,所以是char **chars
// 注意赋值的右侧不能是new (char*)[vSize],没有在new后面加()的语法。
int i = 0;
while (itr != end)
{
string str = *itr; // 从vector中得到下一个string
const char* strContent = str.c_str(); // 将string转换为c风格字符串
size_t strLength = strlen(strContent); // 求字符串长度,不包含null字符
char *strArray = new char[strLength + 1]; // 为当前字符串动态分配一个数组
chars[i] = strArray; // 记录这个字符数组的首地址
// chars[i]相当与*(chars + i)
for (int k = 0; k != strLength + 1; k++)
{ // 将字符串的内容拷贝到新的数组中
strArray[k] = strContent[k];
}
++itr;
++i;
}
for (int j = 0; j != 3; j++)
{ // 显示各字符串
cout << chars[j] << endl;
delete[] chars[j]; // 释放字符数组
}
delete[] chars; // 释放字符指针数组
return 0;
}
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
vector<string> ivec;
ivec.push_back("Hello world");
ivec.push_back("Hello everybody!");
ivec.push_back("Hello my family!");
vector<string>::size_type size = ivec.size();
vector<string>::iterator itr = ivec.begin();
vector<string>::iterator end = ivec.end();
vector<string>::size_type vSize = ivec.size(); // vector的大小
char **chars = new char*[vSize]; // 动态分配字符指针数组
// 赋值操作左边有两个星号可理解为chars本身的元素是一个char*型,
// new操作符又返回了一个指针指向字符数组,所以是char **chars
// 注意赋值的右侧不能是new (char*)[vSize],没有在new后面加()的语法。
int i = 0;
while (itr != end)
{
string str = *itr; // 从vector中得到下一个string
const char* strContent = str.c_str(); // 将string转换为c风格字符串
size_t strLength = strlen(strContent); // 求字符串长度,不包含null字符
char *strArray = new char[strLength + 1]; // 为当前字符串动态分配一个数组
chars[i] = strArray; // 记录这个字符数组的首地址
// chars[i]相当与*(chars + i)
for (int k = 0; k != strLength + 1; k++)
{ // 将字符串的内容拷贝到新的数组中
strArray[k] = strContent[k];
}
++itr;
++i;
}
for (int j = 0; j != 3; j++)
{ // 显示各字符串
cout << chars[j] << endl;
delete[] chars[j]; // 释放字符数组
}
delete[] chars; // 释放字符指针数组
return 0;
}