Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как считать std::string из std::ifstream  (Прочитано 16003 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
acc15
Гость
« : 13-07-2006 23:48 » new

Строка в файле ни чем не оканчивается дана лишь статическая длина строки (скажем 10)

PS:
1.
Код:
std::ifstream s("...",std::ios_base::binary);
std::string j;
s >> j; // не работает
2.
Код:
std::ifstream s("...",std::ios_base::binary);
std::string j;
j.resize(10);
s >> j; // не работает
3.
Код:
std::ifstream s("...",std::ios_base::binary);
std::string j;
j.resize(10);
s.read(???(что тут надо написать?),10);
Пока что додумался до такого решения:
Код:
s.read(&(*j.begin()),10);

« Последнее редактирование: 14-07-2006 00:13 от acc15 » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 14-07-2006 03:03 » 

Код: (C++)
std::getline(std::cin, j);
см. Страуструпа
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #2 : 14-07-2006 03:34 » 

поробуй использовать getline их несколько один член потока другой член стринга вероятно есть еще
суть:
для них можно задавать размер с читываемой строки(для потокового) и/или разделитель(для обоих)
и нет необходимости использовать бинарный режим чтения данных Улыбаюсь

опять же есть boost(а точнее boost serialize или boost array)  Ага
я в своей работе его активно использую, т.е. если у тебя проект не большой то возможно тебе boost ставить и не имеет смысла
Записан

Странно всё это....
eugrita
Помогающий

ru
Offline Offline

« Ответ #3 : 10-04-2011 05:42 » 

аналогичный вопрос как считать с консоли в cтроку string причем ввод может содержать пробелы
код
Код:
string name;
cout<<"Enter string"<<endl;
cin>>name;
оборвет ввод на 1-м же пробеле
cin.getline(str) не катит, т.к. тип string не сhar *
« Последнее редактирование: 10-04-2011 05:43 от eugrita » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 10-04-2011 07:49 » 

eugrita, наверно в начале надо тему прочитать, а потом уже вопросы задавать. Ответ дан выше.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines