содержимое файла в std::string
От: Аноним  
Дата: 13.06.11 14:15
Оценка:
std::fstream file(argv[1], std::ios::in | std::ios::out | std::ios::binary);
file.seekg(0, std::ios::end);
int lengthFile = file.tellg();
file.seekg(0, std::ios::beg);
char *buffer = new char[lengthFile];
file.read(buffer, lengthFile);
std::string bufferString(buffer);
int size = bufferString.length();


не понятно почему при создании std::string равен всего лишь 214? Хотя размер файла 208638. Возможно ли в string вместить весь файл? И если возможно то как? Я почему-то думал что это делается простым способом как выше написал, но не прошло.
Re: содержимое файла в std::string
От: _nn_ www.nemerleweb.com
Дата: 13.06.11 14:24
Оценка: +2
Здравствуйте, Аноним, Вы писали:

А>
А>std::fstream file(argv[1], std::ios::in | std::ios::out | std::ios::binary);
А>file.seekg(0, std::ios::end);
А>int lengthFile = file.tellg();
А>file.seekg(0, std::ios::beg);
А>char *buffer = new char[lengthFile];
А>file.read(buffer, lengthFile);
А>std::string bufferString(buffer);
А>int size = bufferString.length();
А>


А>не понятно почему при создании std::string равен всего лишь 214? Хотя размер файла 208638. Возможно ли в string вместить весь файл? И если возможно то как? Я почему-то думал что это делается простым способом как выше написал, но не прошло.


А buffer[215] случайно не равен '\0' ?

Может вы хотели:
std::string bufferString(buffer, buffer + lengthFile);
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: содержимое файла в std::string
От: Awejk Украина  
Дата: 13.06.11 15:24
Оценка:
Здравствуйте, _nn_, Вы писали:
__>А buffer[215] случайно не равен '\0' ?

а я то думал почему с одним файлом size был 214 а с другим файлом 315, но так и не понял.

__>Может вы хотели:

__>std::string bufferString(buffer, buffer + lengthFile);

большущее спасибо, теперь работает, жаль что сам не догадался про второй параметр, а сразу начал паниковать.
Re[3]: содержимое файла в std::string
От: Centaur Россия  
Дата: 14.06.11 08:00
Оценка: +1 :)
Здравствуйте, Awejk, Вы писали:

__>>Может вы хотели:

__>>std::string bufferString(buffer, buffer + lengthFile);

A>большущее спасибо, теперь работает, жаль что сам не догадался про второй параметр, а сразу начал паниковать.


Об этом не надо было догадываться. Об этом надо было прочитать в стандарте, ну или в справке по конструкторам std::string.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.