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

时间:2015-01-28 18:45:56

标签: c++

我的功能问题是我应该生成一个随机字符串向量。但是,我得到的只是向量中的第一个元素是随机的,其余的是空的。这是代码:

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

有什么可能出错的想法?​​

2 个答案:

答案 0 :(得分:1)

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

您的代码无效的原因是您的eof bit是通过operator>>设置的。调用stringstream::clear()会重置该位并使该流再次可用。

这是您的代码稍作修改,工作正常。我还添加了Thomas Matthews建议的修复:

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

答案 1 :(得分:0)

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

ss.clear();