Warning: file_get_contents(https://whois.pconline.com.cn/jsLabel.jsp?ip=127.0.0.1) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable in D:\wwwroot\huidong\wwwroot\function.inc.php on line 884
为string数组添加行的函数,AddStringRow,修改后亦适用于其它类型的二维数组变量 - huidong

huidong

首页 | 会员登录 | 关于争取 2022 寒假做出汇东网 Ver3.0.0 !
搜索文章


因为经常需要大小不定的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;
}




返回首页


Copyright (C) 2018-2024 huidong