向字符串数组中添加随机字符

C++ Add random characters into a string array

本文关键字:随机 字符 添加 字符串 数组      更新时间:2023-10-16

所以我想创建1000个单词,长度为5个随机字符。在我的主要我有字[1000],但当我试图运行这段代码,它给了我一个错误说"表达式:字符串下标超出范围"。我不知道为什么会这样因为我以为字符串数组是二维的?如果有人能告诉我为什么我的代码是错误的,我会很感激。谢谢。

void createText(string w[], int seed) {
char ch;
srand(seed);
for(int i = 0; i < 1000; i++) {
    for(int j = 0; j < 5; j++) {
        ch = ('A' + rand() % 26);
        w[i][j] = ch;
    }
}
for(int i = 0; i < 1000; i++) {
    cout << w[i];
}
cout << endl;
}

我假设数组w没有1000个元素,还要记住这里您将获得string w[]的副本。最好是传递一个指针到w (string* w),然后你会非常清楚什么是错的。还请记住,cout将字符串写出来,直到它达到''字符,这也可能是原因。使用gdb的快速会话将有所帮助:

gdb program
...
run
bt full

应该指出你的问题。如果它是某种IDE,学习如何在其中调试。Valgrind或其他memcheck,如visual leak detector或luke stackwalker也会向您展示一些关于错误初始化或未提及的内存泄漏的提示。

如果数组是二维的,则不能像w[i]那样打印它的值。您必须始终记住,数组是二维的,这意味着输出必须像cout <<w[我][j];

另外,你正在传递一个字符串数组作为参数,你所做的是在每个位置添加字符,这意味着你实际上只会在字符串中插入1000个字符(因为你实际上添加了"一个字符"字符串),所以你只会放入200个单词,每个单词的长度为5个字符。直接插入字符串,你会得到你的1000个单词,但首先要找到一种用随机字符构建字符串的方法。

类似:(条件){

(条件){造一个词}

array[x][y] = string}

我猜这和你想做的差不多