Показать сообщение отдельно

  #9  
Старый 30.05.2010, 19:03
rudvil
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме:
2066562

Репутация: 86
По умолчанию

Взято из примеров boost'a.
Функции чтения текстовых файлов.
Код:
#include <iostream>
#include <fstream>
#include <string>

///////////////////////////////////////////////////////////////////////////////
//  Helper function reading a file into a string
///////////////////////////////////////////////////////////////////////////////
inline std::string 
read_from_file(char const* infile)
{
    std::ifstream instream(infile);
    if (!instream.is_open()) {
        std::cerr << "Couldn't open file: " << infile << std::endl;
        exit(-1);
    }
    instream.unsetf(std::ios::skipws);      // No white space skipping!
    return std::string(std::istreambuf_iterator<char>(instream.rdbuf()),
                       std::istreambuf_iterator<char>());
}
Чем boost'овский вариант лучше(правильней?), чем скажем этот?
Код:
std::string read_from_file(char const* infile) {
  std::ifstream instream(infile);
  if (!instream.is_open()) {
    std::cerr << "Couldn't open file: " << infile << std::endl;
    exit(-1);
  }
  std::string str;
  std::getline(instream, str, '\0');
  return str;
}
Понятное дело там(в boost'e) что попало не пишут и раз делают так, то скорее всего так лучше(правильней?), хочется узнать из за-чего и почему.

Последний раз редактировалось rudvil; 30.05.2010 в 19:07..
 
Ответить с цитированием