Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 2
Регистрация: 21.12.2011
Сообщений: 73

Оставить информацию в стандартном потоке ввода

19.11.2016, 14:40. Показов 613. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть метод, который сохраняет информацию в ранее открытом файле (известно имя файла):
C++
1
2
3
4
5
6
7
void MenuItem::Save()
{
    if(MenuItem::serviceStation->isBinaryFile)
        SaveAsBinary();
    else
        SaveAsText();
}
Также есть пара методов, которые выполняют непосредственно сохранение.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void MenuItem::SaveAsText()
{
    system("cls");
    cout << "Enter the full file name\nFor example: "myData.txt", "D://Folder/myData.txt"" << endl;
 
    string fileName;
    cin >> fileName;
 
    ofstream *file = new ofstream(fileName);
 
    if(!file->is_open())
    {
        cout << "The file was not saved" << endl;
        cout << "Press Enter to continue...";
        delete file;
        cin.get();
 
        return;
    }
 
    for(auto i = MenuItem::serviceStation->Begin(); i != MenuItem::serviceStation->End(); i++)
    {
        *file << *(*i);
    }
 
    file->close();
    delete file;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void MenuItem::SaveAsBinary()
{
    system("cls");
    cout << "Enter the full file name\nFor example: "myData.bin", "D://Folder/myData.bin"" << endl;
 
    string fileName;
    cin >> fileName;
 
    ofstream *file = new ofstream(fileName, ios::binary);
 
    if(!file->is_open())
    {
        cout << "The file was not saved" << endl;
        cout << "Press Enter to continue...";
        delete file;
        cin.get();
 
        return;
    }
 
    for(auto i = MenuItem::serviceStation->Begin(); i != MenuItem::serviceStation->End(); i++)
    {
        file->write(reinterpret_cast<char*>(&**i), sizeof(CarEntry));
    }
 
    file->close();
    delete file;
}
Можно ли сделать так, чтобы когда управление перейдёт в один из этих методов, в стандартном потоке ввода уже была определённая информация (значение поля типа string), и не приходилось эту информацию вводить с клавиатуры?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.11.2016, 14:40
Ответы с готовыми решениями:

Распознавание базы у числа в стандартном потоке
Всем доброго! Задача: вводится набор чисел с различным основание (dec, hex, oct). Нужно их преобразовать в числа с десятичным...

Отслеживание ввода данных в потоке cin
Добрый вечер. Предположим такой код: void fiterations(int &amp;iter_i) { if (!cin) { cout &lt;&lt; &quot;Некорректный ввод...

Вывод данных структуры (оставление символа '\n' в потоке ввода)
for (int i = 0; i &lt; 8; i++) { cout &lt;&lt; &quot;Введите фамилию и имя&quot; &lt;&lt; endl; getline(cin, BLOCKNOTE.NAME); file &lt;&lt;...

2
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
19.11.2016, 17:44
Не совсем понятен вопрос. Под значением string имеется ввиду путь к файлу? Зачем именно в стандартном потоке ввода? Если не нужен ввод, то почему просто не присвоить string значение?
0
1 / 1 / 2
Регистрация: 21.12.2011
Сообщений: 73
19.11.2016, 17:57  [ТС]
Нужно именно в стандартном потоке ввода потому, что в методах SaveAsText и SaveAsBinary на седьмых строках значение в переменную fileName берётся как раз оттуда. Я думал, что можно как-то отредактировать внутренний буфер потока cin.

И, вообще, я уже решил эту задачу по-другому. Добавил в класс вспомогательное поле и с помощью него определяю откуда были вызваны эти методы. Если из Save, то присваивание, иначе - с клавиатуры.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.11.2016, 17:57
Помогаю со студенческими работами здесь

Исправить ошибку, при которой не работает cin после vector'a (лишний символ '\n' в потоке ввода)
Столкнулся с этой проблемой в другой программе,но решил написать более примитивную и посмотреть, что будет. В итоге тоже самое после cin...

HTML!? Есть поле ввода Type text, после ввода текста и нажатия entrer теряется фокус, как его оставить в этом же поле?
HTML!? Есть поле ввода Type text, после ввода текста и нажатия entrer теряется фокус, как его оставить в этом же поле?

Хочу оставить информацию о себе в header
Хочу что бы в заголовке выводилась информация о разработчике, ответ бы выглядел таким образом developer: vasya pupkin. Поисковикам на...

Как узнать информацию о родительском потоке
Пишу библиотеку и запнулся на одном моменте Если в кратце, то появляется такой момент, что при вызове функции я должен узнать, из...

Число в потоке ввода
Здрасьте! Необходимо присвоить переменной число, которое вводиться c клавиатуры, выглядеть должно как то так: void main(void) { int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru