1。容器ID.txt
容器类型:Refrigerated_Explosive //输入一个序列号每行
1990
1991
1992
END RE
这是我的c ++程序输入文件。 我的目的是读取包含“ Refrigerated_Explosive”和“ RE”的行之间的所有行(在这种情况下,我想读取数字1990、1991、1992)
到目前为止,我已经尝试使用“ while(file1 >> value >> type)”将每行中的第二个单词存储到字符串变量中,并将其与“ Refrigerated_Explosive”进行比较,如果两者相等,则移至下一行并读取内容(并存储在其他文件中),直到第二个单词为“ RE”为止。
#include<iostream>
#include<conio.h>
#include<string>
#include<fstream>
using namespace std;
int main()
{
ifstream file1;
ofstream file2;
int value;
string type;
file1.open("1.Container ID.txt"); //Input File
if(file1)
{
file2.open("1.CID.txt"); //Output File
while(file1>>value>>type)
{
if(type == "Refrigerated_Explosive") //If equal read from next line
{
while(file1>>value>>type)
{
if(type != "RE") //Read until 'RE' not found
file2<<value<<endl;
}
}
}
}
else
cout<<"Source File not Found1!!!\n";
file1.close();
file2.close();
return 0;
}
答案 0 :(得分:0)
您可以使用getline()
函数读取一行,如果getline()
遇到换行符\n
,则会停止读取。
#include<iostream>
#include<conio.h>
#include<string>
#include<fstream>
using namespace std;
int main()
{
ifstream file1;
ofstream file2;
file1.open("input.txt"); //Input File
file2.open("output.txt"); //output file
string line;
while(getline(file1,line))
{
//if the line contains "Refrigerated_Explosive" then read number until meet RE
if(contains(line,"Refrigerated_Explosive"))
{
string number;
while(getline(file1,number)) //read number and write to file output
{
if(number!="RE")
{
file2<<number<<"\n";
}
else return 0; //break if meet "RE"
}
}
}
file1.close();
file2.close();
return 0;
}