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

Random string generator doesn't edit my string array (C++)

本文关键字:字符串 数组 我的 C++ 随机 编辑      更新时间:2023-10-16

我的字符串随机化函数输出空字符串。

我已经看到手动输入它非常有效,我尝试使用指针,但它只给我错误输出。


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;
}

我希望代码输出一个字符串数组(并在另一个函数中对其进行排序(,但它不输出任何内容。

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

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

而不是

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

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

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中潜在的多重分配。

现场演示