[C++] txt ファイルを読み取り、指定されたフィールドをクエリする

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;
}

この記事が参考になったら「いいね!」をお願いします!

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/AAADiao/article/details/131594975