1. 機能説明
関数名 | 説明する | |
---|---|---|
1 | CompareFileFileds() | txt ファイルを文字または行単位で読み取り、string::find() 関数を使用して指定されたフィールドを検索します。見つかった場合は 0 を返し、見つからない場合は -1 を返します。 |
2. コード
方法 1.「<<」演算子を使用する
説明: スペースに遭遇すると文字の読み取りが停止します。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int CompareFileFileds(string filePath, string compareFileds)
{
fstream fs;
fs.open(filePath);
if (fs.fail())
{
fs.close();
cout << "fstream fail!" << endl;
return -1;
}
string fileString;
while (fs >> fileString) //读取字符直到遇到空格
{
int index = fileString.find(compareFileds, 1);
if (index > 0)
{
cout << "compare fileds index : " << index << endl;
return 0;
}
}
cout << "not find compareFileds!" << endl;
return -1;
}
int main()
{
string filePath = "C:\\Users\\ad\\Desktop\\file1.txt";
string compareFileds = "ABC";
int ret = CompareFileFileds(filePath, compareFileds);
if (ret == 0)
{
cout << "Compare sucess!" << endl;
}
else
{
cout << "Compare fail!" << endl;
}
system("pause");
return 0;
}
方法 2. string::getline() を使用する
注: 行ごとに読み取ります。行にスペースが含まれていても、すべて読み取ることができます。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int CompareFileFileds(string filePath, string compareFileds)
{
fstream fs;
fs.open(filePath);
if (fs.fail())
{
fs.close();
cout << "fstream fail!" << endl;
return -1;
}
string fileString;
while (getline(fs,fileString)) //读取一行
{
int index = fileString.find(compareFileds, 1);
if (index > 0)
{
cout << "compare fileds index : " << index << endl;
return 0;
}
}
cout << "not find compareFileds!" << endl;
return -1;
}
int main()
{
string filePath = "C:\\Users\\ad\\Desktop\\file1.txt";
string compareFileds = "ABC";
int ret = CompareFileFileds(filePath, compareFileds);
if (ret == 0)
{
cout << "Compare sucess!" << endl;
}
else
{
cout << "Compare fail!" << endl;
}
system("pause");
return 0;
}