我的字符串随机化功能输出空字符串。
我已经看到手动输入可以完美地工作,我尝试使用指针,但是它只会给我错误输出。
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;
}
我希望代码输出一个字符串数组(并在另一个函数中对其进行排序),但是它什么也不输出。
答案 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
中潜在的多重分配。