寻求特定行的C ++文件IO

时间:2011-07-21 05:51:41

标签: c++ file-io getline

例如,我有 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 个答案:

答案 0 :(得分:4)

按照上述评论的建议播种随机数

#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;

答案 1 :(得分:0)

如果你想为大量的行做这个过程,这里有更有效的方法:

  • 创建一个可以容纳字符串的数组。
  • 将每个单词放在数组中,使得数组索引=行号
  • 现在生成随机数并使用数组索引访问它。