首页 > 编程语言 >C++读写文本文件

C++读写文本文件

时间:2022-12-24 09:44:07浏览次数:65  
标签:std file ifstream fragment 读写 vertex shader C++ 文本文件


std::string readText(std::string &filename)
  {
    std::string shaderCodeStr("");
    std::ifstream shaderFile;
    shaderFile.exceptions(std::ifstream::failbit | std::ifstream::badbit);
    try
    {
      shaderFile.open(filename, std::ios::in);
      std::stringstream shaderStream;
      shaderStream << shaderFile.rdbuf();
      shaderFile.close();
      shaderCodeStr = shaderStream.str();
    }
    catch (std::ifstream::failure e)
    {
      std::cout << "read shader fail: " << e.what() << std::endl;
    }
    // Compile Vertex Shader
    // const char *shaderCodeChar = shaderCodeStr.c_str();
    // return shaderCodeChar;
    return std::move(shaderCodeStr);
  }


---------------------------------------------------------------------------------------------------------------------------------------------

参考:http://www.icodebang.com/article/338709

int Shader::GetShaderFromFile(const GLchar* vertex_shader_path, const GLchar* fragment_shader_path, std::string *vertex_shader_code, std::string *fragment_shader_code)
{
    std::ifstream vertex_shader_file;
    std::ifstream fragment_shader_file;
    vertex_shader_file.exceptions(std::ifstream::badbit | std::ifstream::failbit);
    fragment_shader_file.exceptions(std::ifstream::badbit | std::ifstream::failbit);
    try
    {
        vertex_shader_file.open(vertex_shader_path);
        fragment_shader_file.open(fragment_shader_path);
        std::stringstream vertex_shader_stream, fragment_shader_stream;
        vertex_shader_stream << vertex_shader_file.rdbuf();
        fragment_shader_stream << fragment_shader_file.rdbuf();
        vertex_shader_file.close();
        fragment_shader_file.close();
        *vertex_shader_code = vertex_shader_stream.str();
        *fragment_shader_code = fragment_shader_stream.str();
    }
    catch (std::ifstream::failure e)
    {
        std::cout << "Load Shader File Error!" << std::endl;
        return -1;
    }
    return 0;
}



---------------------------------------------------------------------------------------------------------------------------------------------

标签:std,file,ifstream,fragment,读写,vertex,shader,C++,文本文件
From: https://www.cnblogs.com/gispathfinder/p/17002205.html

相关文章

  • C++Primer
    第2章2.1基本内置类型1、表示整数、字符和布尔值的算术类型合称为**整型**2、0值算术类型代表false,任何非0的值都代表true3、在一行末尾加“\”,可将此行和下一行当......
  • C++:构造函数与拷贝控制
    什么是构造函数构造函数(constructor)是类的一种特殊的成员函数,它被用于控制类的初始化过程、初始化对象的数据成员。无论何时只要类的对象被创建,都会执行构造函数,不同的初......
  • C++加载位图跟SOCKET通信的编写
    //将屏幕信息转换为位图结构CDC*pDeskDC=GetDesktopWindow()->GetDC();//获取桌面的额画图对象intwidth=300;intheight=300;CDCmemDC;//定义一个内存......
  • 观察者模式javac++
    软件设计                 石家庄铁道大学信息学院 实验21:观察者模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解观察者模式......
  • 状态模式javac++
    软件设计                 石家庄铁道大学信息学院 实验 22:状态模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解状态模式的......
  • 策略模式javac++
    软件设计                 石家庄铁道大学信息学院 实验23:策略模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解策略模式的动......
  • 模板方法模式javac++
    软件设计                 石家庄铁道大学信息学院 实验24:模板方法模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解模板方法......
  • 访问者模式javac++
    软件设计                 石家庄铁道大学信息学院 实验25:访问者模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解访问者模式......
  • 职责链模式javac++
    软件设计                 石家庄铁道大学信息学院 实验15:职责链模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解职责链模式......
  • 命令模式javac++
    软件设计                 石家庄铁道大学信息学院 实验16:命令模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解命令模式的动......