在 C++ Builder 中获取文本文件的第二行

Get the second line of a Text File in C++ Builder

我的文本文件如下所示

Fruit 
Vegetable

我需要 return Vegetable

的功能

这是我尝试使用并获得“Vegetable”的代码:

String getItem()
{
ifstream stream("data.txt");

stream.ignore ( 1, '\n' );

std::string line;
std::getline(stream,line);

std::string word;
return word.c_str();
} 

然后我这样做是为了尝试将第二行放入编辑框中:

void __fastcall TMainForm::FormShow(TObject *Sender)
{
    Edit1->Text = getItem();
}

出于某种原因,当我 运行 代码编辑框最终什么也没有,完全空白。

istream::ignore()的第一个参数用字符表示,而不是。因此,当您调用 stream.ignore(1, '\n') 时,您只会忽略 1 个字符 (即 FruitF),而不是 1 行.

要忽略整行,需要传入std::numeric_limits<streamsize>::max()而不是1。这告诉 ignore() 忽略所有字符,直到遇到指定的终止符 ('\n')。

此外,您 return 是一个空白 String。您忽略了用 std::getline().

阅读的 line

试试这个:

#include <fstream>
#include <string>
#include <limits>

String getItem()
{
    std::ifstream stream("data.txt");

    //stream.ignore(1, '\n');
    stream.ignore(std::numeric_limits<streamsize>::max(), '\n');

    std::string line;
    std::getline(stream, line);

    return line.c_str();
    // or: return String(line.c_str(), line.size());
}