Ввод-вывод файла C ++ для конкретной строки - PullRequest
0 голосов
/ 21 июля 2011
Например,

, у меня есть test.txt , содержащий:

apple
computer
glass
mouse
blue
ground

, затем я хочу получить одну случайную строку из текстового файла.вот мой код:

ifstream file;
file.open("test.txt", ios::in);
char word[21];

int line = rand()%6 + 1;
for (int x = 0 ; x < line ; x++)
   test.getline (word, 21);

cout << word;

проблема в том, что переменная 'word' всегда содержит первую строку, независимо от того, какое случайное число задано ...

Ответы [ 2 ]

4 голосов
/ 21 июля 2011

Посмотрите случайное число, как указано в комментариях выше

#include <cstdlib>
#include <ctime>
#include <fstream>
//...other includes and code

ifstream file;
file.open("abc.txt", ios::in);
char word[21];
srand( time(NULL) );
int line = rand()%6 + 1;

for (int x = 0 ; x < line ; x++)
   file.getline (word, 21);

cout << word;
0 голосов
/ 27 октября 2013

Если вы хотите сделать этот процесс для большого количества строк, вот более эффективный способ:

  • Создать массив, который может содержать строки.
  • Поместите каждое слово в массив так, чтобы индекс массива = номер строки.
  • Теперь сгенерируйте случайное число и получите доступ к нему с помощью индекса массива.
...