Ошибка сегментации при использовании строки резерва () - PullRequest
0 голосов
/ 18 сентября 2011

Я пытаюсь прочитать содержимое текстового файла в строковый объект, следуя примеру на этой странице .Пока что это то, что у меня есть:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

...

// char* filename is a given parameter
ifstream in (filename, ios::in|ios::ate);
if (in.is_open()) {
    size_t filesize;
    filesize = in.tellg();
    string aux;
    aux.reserve(filesize);
    in.seekg(0);
    while (!in.eof()) {
      aux += in.get();
    }
    in.close();
    // From here, I would use aux to process the contents of the file
} else {
  // Couldn't open file
}

Однако при вызове aux.reserve(filesize) возникает ошибка сегментации, и я действительно застрял с тех порЯ новичок в C / C ++ и до сих пор не совсем понимаю, как обращаться с управлением памятью.

Для справки, я знаю немного Java, PHP и C #.Файл, который я пытаюсь прочитать, имеет длину 666 239 (~ 650 КБ).Я использую Code :: Blocks в Ubuntu 11.4, почти все по умолчанию, поэтому он использует последнюю стабильную версию g ++.Заранее спасибо за помощь!

...