因为经常需要大小不定的string数组,所以写了这个函数来方便地为string数组添加行
函数原型
// 为string数组新增一行的空间
// 新的string数组直接存回原string数组,并返回新的数组指针
//
// p_strSrc 原数组
// p_nOld 原数组行数
string* AddStringRow(string*& p_strSrc, int p_nOld)
{
string* temp;
int num = p_nOld;
// 备份原字符串
temp = new string[num + 1];
for (int i = 0; i < num; i++)
temp[i] = p_strSrc[i];
// 删除原字符串
if (num)
delete[] p_strSrc;
p_strSrc = temp;
return temp;
}
这样更好一点(把Dictionary类型换成你要的类型):
// 为数组新增一行的空间
// 新的数组直接存回原数组,并返回新的数组指针
//
// p_Src 原数组
// p_nOld 原数组行数
Dictionary* AddArrayRow(Dictionary*& p_Src, int p_nOld)
{
Dictionary* temp;
int num = p_nOld;
// 备份原数组
temp = new Dictionary[num + 1];
for (int i = 0; i < num; i++)
temp[i] = p_Src[i];
// 删除原数组
if (num)
delete[] p_Src;
p_Src = temp;
return temp;
}
使用示例
#include <string>
using namespace std;
// 为string数组新增一行的空间
// 新的string数组直接存回原string数组,并返回新的数组指针
//
// p_strSrc 原数组
// p_nOld 原数组行数
string* AddStringRow(string*& p_strSrc, int p_nOld)
{
string* temp;
int num = p_nOld;
// 备份原字符串
temp = new string[num + 1];
for (int i = 0; i < num; i++)
temp[i] = p_strSrc[i];
// 删除原字符串
if (num)
delete[] p_strSrc;
p_strSrc = temp;
return temp;
}
int main()
{
string* str;
int num = 0;
AddStringRow(str, num);
num++;
str[num - 1] = "Row 1";
AddStringRow(str, num);
num++;
str[num - 1] = "Row 2";
for (int i = 0; i < num; i++)
printf("%s\n", str[i].c_str());
return 0;
}