在C++中生成字符串的随机向量

Generating a random vector of strings in C++

本文关键字:随机 向量 字符串 C++      更新时间:2023-10-16

我的函数有一个问题,它应该生成随机字符串的向量。但是,我得到的只是向量中的第一个元素是随机的,其余的都是空的。代码如下:

void losuj(vector <string> &vec, int ile){
    int i, j;
    string str;
    stringstream ss;
    char c;
    for(i=0; i<ile; i++){
        for(j=0; j<5; j++){
            c= rand()%25 + 97;
            ss << c;
        }
        ss >> str;
        vec.push_back(str);
        ss.str().clear();
        str.clear();
    }
}

关于可能出现什么问题的任何想法?

首先,正如WhozCraig所说,你不需要在这里使用stringstreamstd::string提供您需要的一切。

您的

代码不起作用的原因是您的eof位是通过operator>>设置的。调用 stringstream::clear() 将重置位并使流再次可用。

这是您的代码,稍作修改,工作正常。我还添加了托马斯·马修斯建议的修复程序:

void losuj(vector <string> &vec, int ile)
{
    int i, j;
    string str;
    char c;
    for(i=0; i<ile; i++)
    {
        for (j=0; j<5; j++)
        {
            c = rand() % 26 + 'A';
            str += c;
        }
        vec.push_back(str);
        str.clear();
    }
}

您必须重置字符串流的状态,因为您已达到eof

ss.clear();