字符串上使用的运算符 >> 将从流中读取 1 个(空白)空格分隔的单词。
所以问题是你想在每次选择一个单词时读取文件还是要将文件加载到内存中然后从内存结构中取出单词。没有更多信息,我只能猜测。
从文件中选择一个单词:
// Note a an ifstream is also an istream.
std::string pickWordFromAStream(std::istream& s,std::size_t pos)
{
std::istream_iterator<std::string> iter(s);
for(;pos;--pos)
{ ++iter;
}
// This code assumes that pos is smaller or equal to
// the number of words in the file
return *iter;
}
将文件加载到内存中:
void loadStreamIntoVector(std::istream& s,std::vector<std::string> words)
{
std::copy(std::istream_iterator<std::string>(s),
std::istream_iterator<std::string>(),
std::back_inserter(words)
);
}
生成随机数应该很容易。假设你只想要psudo-random。