c++实践小函数经验积累(一)

  • 读取文件输入并判断是否合法
// get.cc
# include "get.h"

std::istream& get(std::istream& in)
{
	int ival;  // 类型可以替换 可以修改成模板函数
	while(in >> ival, !in.eof())
	{
		if (in.bad())
			throw std::runtime_error("IO stream corrupted");
		if (in.fail())
		{
			std::cerr << "bad data, try again" << std::endl;  // 输入的类型不是int 报错
			in.clear(); // 恢复到正常的流状态
			in.ignore(200, '\n'); // 忽略错误数据 200个字符 或 换行
			continue;
		}
		std::cout << "输入的数据" << ival << std::endl;
	}
	in.clear(();
	
	return in;
}

// get.h
#ifndef _GET_H
#define _GET_H

#include <iostream>
std::istream& get(std::istream& in);
#endif
  • 安全的打开文件
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

ifstream & open_file(ifstream &in, const string &file)
{
	/* 安全的打开文件
	*  ifstream &in 文件流对象
	*  const string &file 文件名
	*/
	in.close();
	in.clear();
	in.open(file.c_str());
	return in;
}

int main()
{
	string fileName;
	fileName = "test.txt"; // 文件名test.txt
	ifstream inFile;  // 文件流对象
	if(!open_file(inFile, fileName))  //调用open_file函数
	{
		cout << "error: can not open file: " << endl;
		return -1;
	}
	
	return 0;
}
上一篇:漏洞学习笔记-018-利用部分覆盖定位


下一篇:Python如何定义接口和抽象类