1 通过关键词,读取某一行 (3种方法)
通过定位关键词,读取某一行信息,返回CString
//通过定位关键词,读取某一行信息,返回CString
CString fileRW::Read_CStrLine(CString KEY)
{
ifstream ifs; //创建文件输入对象
ifs.open("../x64/Debug/config.ini", ios::in); //打开文件
if (!ifs.is_open()) {
cout << "文件打开失败" << endl;
return _T("");
}
CString StrLine;
//读文件,读取关键词KEY的下一行内容
char buf[1024] = { 0 };
while (KEY != CString(buf))
{
ifs.getline(buf, sizeof(buf)); //读取一行内容
}
ifs.getline(buf, sizeof(buf));
StrLine = CString(buf);
ifs.close(); //关闭文件
return StrLine;
}
通过定位关键词,读取某一行信息,返回CString
//通过定位关键词,读取某一行信息,返回CString
CString fileRW::Read_KeyLine(CString KEY)
{
if (!file.Open(GetAppPath() + "./config.ini", CFile::modeRead))
{
return 0;
}
CString strLine = _T("");
while (file.ReadString(strLine))
{
if (KEY == strLine)
{
break;
}
}
file.ReadString(strLine);
file.Close();
return strLine;
}
通过定位关键词,读取某一行信息,返回string
//通过定位关键词,读取某一行信息,返回string
string fileRW::Read_strLine(string KEY)
{
ifstream ifs; //创建文件输入对象
ifs.open("../x64/Debug/config.ini", ios::in); //打开文件
if (!ifs.is_open()) {
cout << "文件打开失败" << endl;
return "-1";
}
string StrLine;
//读文件,读取关键词KEY的下一行内容
char buf[1024] = { 0 };
while (KEY != string(buf))
{
ifs.getline(buf, sizeof(buf)); //读取一行内容
}
ifs.getline(buf, sizeof(buf));
StrLine = string(buf);
ifs.close(); //关闭文件
return StrLine;
}
2 删除 指定行
/************************************
@ Brief: 删除指定行
@ Author:
@ Created:
@ Return:
************************************/
void fileRW::DelLineData(char* fileName, int lineNum)
{
ifstream in;
in.open(fileName);
string strFileData = "";
int line = 1;
char lineData[1024] = { 0 };
while (in.getline(lineData, sizeof(lineData)))
{
if (line == lineNum)
{
strFileData += "\n";
}
else
{
strFileData += CharToStr(lineData);
strFileData += "\n";
}
line++;
}
in.close();
//写入文件
ofstream out;
out.open(fileName);
out.flush();
out << strFileData;
out.close();
}
3 修改 指定行
void fileRW::ModifyLineData(string fileName, int lineNum, string lineData)
{
ifstream in;
in.open(fileName, ios::in);
string strFileData = "";
int line = 1;
char tmpLineData[1024] = { 0 };
while (in.getline(tmpLineData, sizeof(tmpLineData)))
{
if (line == lineNum)
{
strFileData += lineData;
strFileData += "\n";
}
else
{
strFileData += tmpLineData;
strFileData += "\n";
}
line++;
}
in.close();
//写入文件
ofstream out;
out.open(fileName, ios::out);
out.flush();
out << strFileData;
out.close();
}
参考:
C++实现读取文件的指定行数的方法
C++ 读文件某一行(特定行)数据