gpt4 book ai didi

c++ - getline 和文件处理

转载 作者:行者123 更新时间:2023-11-28 08:24:55 25 4
gpt4 key购买 nike

我想读取 2 个单独文件的第一行,然后比较它们...以下是我使用的代码,但它给了我“istream to string error”。我需要先使用 while 条件来开始读取文件吗?

ifstream data_real(filename.c_str()); /*input streams to check if the flight info
are the same*/
ifstream data_test("output_check.txt");
string read1, read2;
string first_line_input = getline(is,read1);
string first_line_output_test = getline(data_test,read2);

string test_string1, test_string2;
int num_lines_output_test, num_lines_input;
if((first_line_input.substr(0,3)==first_line_output_test.substr(0,3)))
{
while(!data_test.eof()) // count the number of lines for the output test file with the first flight info
{
getline(data_test,test_string1);
num_lines_output_test++;
}
while(getline(is,test_string2)) // count the number of lines for the output test file with the first flight info
{
if(test_string2.substr(0,3)!="ACM")
num_lines_input++;
else
break;
}
}

最佳答案

getline(istream, string) 返回对 istream 的引用,而不是字符串。

因此,比较每个文件的第一行可能是这样的:

string read1, read2;
if !(getline(is,read1) && getline(data_test,read2)){
// Reading failed
// TODO: Handle and/or report error
}
else{
if(read1.substr(0,3) == read2.substr(0,3)){
//...

此外:切勿将eof() 用作流读取循环的终止条件。惯用的写法是:

while(getline(data_test,test_string1)) // count the number of lines for the output test file with the first flight info
{
num_lines_output_test++;
}

关于c++ - getline 和文件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4370553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com