随机字符串生成器不会编辑我的字符串数组(C ++)

时间:2019-03-27 15:37:35

标签: c++ arrays string

我的字符串随机化功能输出空字符串。

我已经看到手动输入可以完美地工作,我尝试使用指针,但是它只会给我错误输出。


void random(string Arr[], int ArrSize){
    for(int i = 0; i < ArrSize; i++){
        int StrSize = rand() % 8 + 3;
        for(int j = 0; j < StrSize; j++){
           (Arr[i])[j] = rand() % 74 + 48;
        }
    }
}



int main(){
    int ArrSize;
    cout << "Input string array length: \n";
    cin >> ArrSize;
    string StringArr[ArrSize];
    random(StringArr, ArrSize);
    lexCombSort(StringArr, ArrSize);
    for(int i = 0; i < ArrSize; i++) cout << StringArr[i] << " \n";

    return 0;
}

我希望代码输出一个字符串数组(并在另一个函数中对其进行排序),但是它什么也不输出。

2 个答案:

答案 0 :(得分:2)

您应该将字符追加到字符串中,而不要尝试覆盖它们:

Arr[i].push_back (rand() % 74 + 48);

代替

(Arr[i])[j] = rand() % 74 + 48;

答案 1 :(得分:0)

最有效的,尤其是对于较长的字符串,可能是:

void random(string Arr[], int ArrSize){
    for(int i = 0; i < ArrSize; i++){
        int StrSize = rand() % 8 + 3;
        Arr [i].append (StrSize, 0);
        for(int j = 0; j < StrSize; j++){
           (Arr[i])[j] = rand() % 74 + 48;
        }
    }
}

因为它避免了push_back中潜在的多重分配。

Live demo