C++ 从文本文件中随机选取一行

C++ 从文本文件中随机选取一行,c++,C++,我需要写一个8球代码,有11个选项显示,它需要从一个文本文件拉。我让它从文本文件中提取行,但有时它会提取一个空行而不写入。我需要它只接受一行有文字的文字。 以下是需要从中提取的选项: 是的,当然! 毫无疑问,是的。 你可以放心。 当然可以稍后再问我。 我不确定。 我现在不能告诉你。 午睡后我会告诉你的。 不可能!我不这么认为。 毫无疑问,没有。 答案显然是否定的 string line; int random = 0; int numOfLines = 0; ifstream File("fil

我需要写一个8球代码,有11个选项显示,它需要从一个文本文件拉。我让它从文本文件中提取行,但有时它会提取一个空行而不写入。我需要它只接受一行有文字的文字。 以下是需要从中提取的选项: 是的,当然! 毫无疑问,是的。 你可以放心。 当然可以稍后再问我。 我不确定。 我现在不能告诉你。 午睡后我会告诉你的。 不可能!我不这么认为。 毫无疑问,没有。 答案显然是否定的

string line;
int random = 0;
int numOfLines = 0;
ifstream File("file.txt");

srand(time(0));
random = rand() % 50;

while (getline(File, line))
{
    ++numOfLines;

    if (numOfLines == random)
    {
        cout << line;
    }

}
字符串行;
int随机=0;
int numOfLines=0;
ifstream文件(“File.txt”);
srand(时间(0));
random=rand()%50;
while(getline(文件,行))
{
++努莫夫林;
if(numOfLines==随机)
{

coutIMHO,您需要使文本行的长度相同,或者使用文件位置的数据库(表)

使用文件位置 至少,创建一个
std::vector

接下来读取文件中的行,记录字符串开头的文件位置:

std::vector<std::pos_type> text_line_positions;
std::string text;
std::pos_type file_position = 0;
while (std::getline(text_file, text)
{
    text_line_positions.push_back(file_position);

    // Read the start position of the next line.
    file_position = text_file.tellg();
}
表达式
text\u line\u positions.size()
将返回文件中的文本行数

如果文件放在内存中 如果文件适合内存,可以使用
std::vector

std::string text_line;
std::vector<string> database;
while (getline(text_file, text_line))
{
    database.push_back(text_line);
}
std::字符串文本\u行;
向量数据库;
while(getline(文本文件,文本行))
{
数据库。推回(文本行);
}
要打印文件中的10行,请执行以下操作:

std::cout << "Line 10 from file: " << database[9] << std::endl;

std::cout如果您的文件有11行,那么当
random
等于例如
40
时,您希望读取什么内容?那么您的意思是,如果该行为空,您希望它忽略它并查看下一行?您是否查看了关键字
continue
std::cout << "Line 10 from file: " << database[9] << std::endl;