(T-1) C++知识点补充 ifstream + enum

ifstream:

 参考博客: ifstream 的使用方法介绍 一_龙贝尔莱利的博客-CSDN博客_ifstream

ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;

代码框架:

struct  ShaderProgramSource
{
      std::string VertexSource;
      std::string FragmentSource;   
}

static ShaderProgramSource ParseShader(const std::string& filepath)
{
       std:ifstream stream(filepath);

       //枚举关键字
       enum   class ShaderType{

       };
       
       //搜索关键字
       while(getline(stream,line)
       {
            在stream文件找 line
       }
   
       //关键字匹配
}

源码

struct ShaderProgramSource
{
	std::string VertexSource;
	std::string FragmentSource;
};

static ShaderProgramSource ParseShader(const std::string& filepath)
{
	std::ifstream stream(filepath);  //从硬盘到内存
	enum class ShaderType
	{
		NONE=-1,VERTEX=0,FRAGMENT=1
	};
	std::stringstream ss[2];
	ShaderType type=ShaderType::NONE;
	std::string line;
	while (getline(stream, line))
	{
		if (line.find("#shader") != std::string::npos)
		{
			if (line.find("vertex") != std::string::npos)
				type = ShaderType::VERTEX;
			else  if (line.find("fragment") != std::string::npos)
				type = ShaderType::FRAGMENT;
		}
		else
		{
			ss[(int)type] << line << "\n";
		}
	}
	return { ss[0].str(),ss[1].str() };
}

ENUM 

参考博客:函数返回值类型为枚举类型 - 管言 - 博客园

C++ enum枚举类型_一叶执念的博客-CSDN博客_c++ emun

      枚举是个好东西,它和结构体一样,都可以定义一种数据类型,但是枚举有一个更优点,就是它可以默认指定定义的初始值。

  有一个项目,涉及到CPU卡,卡片有错误、上电、DF01目录等状态,如果单独定义这些变量,要使用很多变量,这里有一个规律,即:CPU卡不能同时为这几种状态中的几个,只能为其中的一个,这样,我们可以定义一个枚举类型变量,例如:

//标识ic的几种状态
typedef enum
{
     ICC_ERROR,  
     ICC_NO_EXIST,  
     ICC_EXIST,  
     ICC_POWER_OFF,  
     ICC_POWER_ON,
     ICC_IN_DIR_1001
} t_IccStatus;

t_IccStatus getIccStatus;

    在程序中,使用这个枚举变量既能标识标识在整个工程中CPU卡的状态,简洁,明了,并且节省了很多全局变量的使用。

返回值类型为枚举:

  一般情况下,一个函数都有一个返回值,在一个工程中,如果在每个出错点,都定义一个特殊数字的返回值,这样,在main中,返回的就是唯一值,这样,可以很快的定位出出错点。

  如果和上面的枚举配合起来,将函数的返回值定义为枚举类型,在定义枚举时,使用英文单词来实现各种不同返回值的定义,这样,在调试的时候,能够知名达意,很快的找到出错点,达到事半功倍的效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 使用 ifstream 的方法是通过以下步骤: 1. 包含 <fstream> 头文件。 2. 定义一个 ifstream 类型的对象,用来打开和读取文件。例如:ifstream inFile; 3. 打开需要读取的文件的步骤为:inFile.open("文件名"); 4. 检查文件是否成功打开。可以使用 if(inFile.is_open()) 判断文件是否成功打开。 5. 读取文件。可以使用 inFile >> 变量名,或者 getline(inFile, 字符串变量名) 分别读取文件中的数据。 6. 关闭文件。使用 inFile.close() 关闭打开的文件。 ### 回答2: 在Dev-C++中,使用ifstream读取文件非常简单。我们可以使用以下步骤来使用ifstream在Dev-C++中读取文件。 1. 首先需要包含<fstream>头文件: ```c++ #include <fstream> ``` 2. 然后声明一个ifstream对象,并打开要读取的文件: ```c++ ifstream inputFile; inputFile.open("file.txt"); ``` 其中,file.txt是你想要读取的文件名称。 3. 确认文件已经被成功打开;如果未能打开该文件,我们可以输出一条错误信息: ```c++ if (!inputFile.is_open()) { cout << "Unable to open file." << endl; return 1; //退出程序 } ``` 4. 从文件中读取数据,我们可以使用循环语句,并使用getline函数逐行读取数据: ```c++ string line; while (getline(inputFile, line)) { //读取一行 cout << line << endl; //输出该行 } ``` 5. 读取完毕后,需要关闭文件: ```c++ inputFile.close(); ``` 最终,完整的使用ifstream读取文件的程序如下: ```c++ #include <iostream> #include <fstream> #include <string> using namespace std; int main() { ifstream inputFile; inputFile.open("file.txt"); if (!inputFile.is_open()) { cout << "Unable to open file." << endl; return 1; } string line; while (getline(inputFile, line)) { cout << line << endl; } inputFile.close(); return 0; } ``` 需要注意的是,在使用ifstream读取文件过程中,需要确保文件存在并且有可读权限,否则会出现读取失败的情况。同时,我们也可以使用其他的ifstream成员函数来读取文件,例如read函数可以读取固定数量的字节,seekg函数可以定位文件读取位置等等。 ### 回答3: 在使用 DevC++ 编写程序时,我们可以使用 ifstream 对象来读取文件中的数据。下面是在 DevC++ 中使用 ifstream 的方法: 1. 引入头文件。在程序文件头部添加以下代码: ```c++ #include <fstream> ``` 2. 定义 ifstream 对象。在程序主函数前定义一个 ifstream 对象,例如: ```c++ ifstream myfile; ``` 3. 打开文件。使用 ifstream 的 open() 函数打开文件。该函数的参数为要打开的文件名及打开方式,如下所示: ```c++ myfile.open("file.txt", ios::in); ``` 其中,“file.txt” 为要打开的文件名,"ios::in" 表示以只读方式打开文件。也可以使用不同的打开方式,如 "ios::out" 表示以只写方式打开文件,"ios::app" 表示以追加方式打开文件等。 4. 读取文件内容。使用 ifstream 的 getline() 函数读取文件中的每一行数据并输出。例如: ```c++ string line; while (getline(myfile, line)) { cout << line << endl; } ``` 上面的代码中使用了 getline() 函数读取文件中的每一行数据,并将其输出到屏幕上。 5. 关闭文件。读取完文件内容后,需要使用 ifstream 的 close() 函数关闭文件。例如: ```c++ myfile.close(); ``` 总的来说,在 DevC++ 中使用 ifstream 对象读取文件的过程是比较简单的。如果需要读取大量数据,还可以使用其他的读取方式,例如使用 ifstream 的 read() 函数一次读取一定量的数据等。在使用 ifstream 读取文件时,需要注意保证文件路径正确,并且文件打开成功后才能进行读取操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘敬_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值