2015-04-20 22 views
8

koydu ve ben bir std :: string ben ilgili StackOverflow mesajlar baktımalın dosya içeriği ve OpenGL kullanıyorum C bir dize ++

konması VertexShader.glsl içeriğini ihtiyaç Bununla ilgili olarak, veri türlerini ve işlerini eşleştirmek için gerçekten nasıl bir araya getireceğimi bilmiyorum. Read file-contents into a string in C++ Ne olduğu hiçbir ipucu var

#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; 
} 

örneğin bunun için

alın

Her zaman std :: string içeriği ben kullandım std :: string sonra önce,

std::string name = "2bdkid"; 

cevap

9

Bu constructor #6 here var:

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

: aralık [first, last) içeriğiyle

Oluşumlar dize.

istreambuf_iterator olup:

(bu örnekte ifs) std::basic_streambufardışık karakterleri bu inşa edilmiş olan nesne ... varsayılan inşa std::istreambuf_iterator okur, tek geçişli giriş yineleyici akış sonu yineleyicisi olarak bilinir. Geçerli bir std::istreambuf_iterator geçerli akışın sonuna ulaştığında, akış sonu yineleyicisine eşit olur. ilk bir dosya içine tek-geçişli bir yineleyicisi, ve ikincisi, bir sentinel olarak hareket sonu akımı yineleyicisi -

content

bir yineleyici çiftinden imal edilir. [first, last) string yapıcısının ifade ettiği aralık, bu durumda, dosyanın tam içeriği olur.