从字符串函数返回值

Return value from string function

本文关键字:返回值 函数 字符串      更新时间:2023-10-16

我有一个包含20个单词的字符串数组。我做了一个函数,从数组中取一个随机单词。但我想知道怎样才能从数组中返回那个单词。现在我使用的是void函数,我使用了char类型,但它不起作用。这里没什么帮助?需要制作猜字游戏。

代码:

#include <iostream>
#include <time.h>
#include <cstdlib>
#include <stdlib.h>
#include <algorithm>///lai izmantotu random shuffle funckiju
#include <string>
using namespace std;

void random(string names[]);

int main() {
     char a;
     string names[] = {"vergs", "rokas", "metrs", "zebra", "uguns", "tiesa", "bumba",
                       "kakls", "kalns", "skola", "siers", "svari", "lelle", "cimdi",
                       "saule", "parks", "svece", "diegs", "migla", "virve"};
random(names);
        cout<<"VARDU MINESANAS SPELE"<<endl;
        cin>>a;



return 0;
}
void random(string names[]){
    int randNum;
for (int i = 0; i < 20; i++) { /// makes this program iterate 20 times; giving you 20 random names.
srand( time(NULL) ); /// seed for the random number generator.
randNum = rand() % 20 + 1; /// gets a random number between 1, and 20.
names[i] = names[randNum];
}
//for (int i = 0; i < 1; i++) {
//cout << names[i] << endl; /// outputs one name.
//}
}

使random返回string。您还只需要对数字生成器进行一次种子设定。由于您只想从数组中获得1个随机字,因此不需要for循环。

string random(string names[]){
    int randNum = 0;
    randNum = rand() % 20 + 1;
    return names[randNum];
}

然后,在main函数中,将string变量分配给random函数的返回值。

int main() {
    srand( time(NULL) ); // seed number generator once
    char a;
    string names[] = {"vergs", "rokas", "metrs", "zebra", "uguns", "tiesa", "bumba",
                       "kakls", "kalns", "skola", "siers", "svari", "lelle", "cimdi",
                       "saule", "parks", "svece", "diegs", "migla", "virve"};
    string randomWord = random(names);
    cout<<"VARDU MINESANAS SPELE"<<endl;
    cin>>a;
    return 0;
}

在您的问题和上一个答案中,您访问名称数组时超出了限制:

int randNum = rand() % 20 + 1;
return names[randNum];

您从不访问名称[0],而是在寻址名称[20]时访问数组后面。

此外,srand(time(NULL))只能在main()函数的开头调用一次。

我对字符串不是很熟悉,但您应该能够将random()声明为字符串函数。

例如:字符串随机(字符串名称[]);