我正在使用OpenGL,我需要将VertexShader.glsl的内容放入std :: string
我已经查看了相关的StackOverflow帖子,但我真的不知道如何将数据类型和内容匹配在一起以使其工作。
以Read file-contents into a string in C++
为例#include <fstream>
#include <string>
int main(int argc, char** argv)
{
std::ifstream ifs("myfile.txt");
std::string content( (std::istreambuf_iterator<char>(ifs) ),
(std::istreambuf_iterator<char>() ) );
return 0;
}
我不知道
之后发生了什么std :: string content
每次我使用std :: string之前就像
一样std::string name = "2bdkid";
答案 0 :(得分:9)
template< class InputIt >
basic_string( InputIt first, InputIt last,
const Allocator& alloc = Allocator() );
其中:
使用范围
[first, last)
的内容构造字符串。
一个单行输入迭代器,它从
std::basic_streambuf
(本例中为ifs
)对象中读取连续的字符...构造它的默认值std::istreambuf_iterator
被称为流末端迭代器。当有效std::istreambuf_iterator
到达基础流的末尾时,它变得等于流末尾迭代器。
content
是由迭代器对构造的 - 第一个是我们在文件中的单遍迭代器,第二个是作为哨兵的流末端迭代器。在这种情况下,[first, last)
构造函数引用的范围string
是文件的完整内容。