Оператор >>, используемый в строке, будет читать 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)
);
}
Генерация случайного числа должна быть достаточно простой. Предполагая, что вы хотите только псевдослучайный.