Возьмите содержимое файла и поместите его в строку в С++

Я использую OpenGL, и мне нужно, чтобы содержимое VertexShader.glsl было помещено в std::string

Я просмотрел связанные записи StackOverflow об этом, но я действительно не знаю, как сопоставлять типы данных и прочее, чтобы заставить его работать.

Возьмите, например, это из Прочитать содержимое файла в строке на С++

#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;
}
</char></char></string></fstream>

Я не знаю, что происходит после

std:: string content

Каждый раз, когда я использовал std::string, раньше был как

std::string name = "2bdkid";
1 ответ

Это конструктор № 6 здесь:

template< class InputIt >
basic_string( InputIt first, InputIt last,
 const Allocator& alloc = Allocator() );

Что делает:

Создает строку с содержимым диапазона [first, last).

istreambuf_iterator:

однопроходный итератор ввода, который читает последовательные символы из std::basic_streambuf (ifs в этом примере), для которого он был создан... Построенный по умолчанию std::istreambuf_iterator известный как итератор конца потока. Когда действительный std::istreambuf_iterator достигает конца базового потока, он становится равным итератору конца потока.

content строится из пары итераторов, первым из которых является наш однопроходный итератор в файл, а второй из них - итератор конца потока, который действует как контролер. Диапазон [first, last), на который ссылается конструктор string, является в этом случае полным содержимым файла.

licensed under cc by-sa 3.0 with attribution.