Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041

Функция ввода вместо cin

04.08.2013, 05:28. Показов 4199. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здорова!

Нужно написать функцию ввода вместо cin, которая бы читала строки.
Я не знаю чем можно заменить cin. Нужно постараться сделать так что бы по быстродействию функция читала строки быстрее чем cin (строки определенной длинны 15-20 символов). Как это сделать?

И вообще чем можно заменить cin?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.08.2013, 05:28
Ответы с готовыми решениями:

Какая функция объекта cin позволяет вставить символ в поток ввода?
Какая функция обьекта cin позволяет вставить символ в поток ввода?Пример,если можно.

Использование cin.get вместо cin
Есть задача: нужно рассчитать среднее значение входных суммирующихся чисел. Я его решил таким способом: #include <iostream> ...

Cin вместо cin.getline
#include <stdlib.h> #include <string.h> #include <fstream> using namespace std; int get_int(int default_value); char name; ...

10
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
04.08.2013, 06:01
Что-то наподобие getc(), getchar().
1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
04.08.2013, 06:04  [ТС]
alsav22, Да это не то, а мб и то хз, нужно короче задачку решить: "Представьте, что считывание строк средней длинны (от 5 до 25 символов) из потока cin — самое узкое место в вашей системе. Напишите функцию ввода, читающей такие строки с максимально возможной скоростью. Допустимо организовать интерфейс функции в угоду быстродействию (даже за счет некоторого неудобства в использовании). Сравните результат с реализацией операции >> для типа string."

И куда тут get() приписать? get() она ж один символ из потока считывает, а мне как ее тут наверно нужно типо для строк сделать что мне нужно свою функцию написать myget() которая будет возвращать не символ а строку?
alsav22, Дружище помоги последняя задачка осталась из главы!

Добавлено через 2 минуты
Я вообще условие сразу не правильно понял, не вместо cin, а просто функцию которая б считывала из cin строки максимально быстро.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
04.08.2013, 06:19
Как-то так можно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void mycin(char *buff)
{
    int i = 0;
    while (buff[i] = getc(stdin))
    {
        if (buff[i] == '\n')
        {
            buff[i] = '\0'; 
            return;
        }
        ++i;
    }
}
1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
04.08.2013, 06:33  [ТС]
alsav22, а почему она void возвращает мб она должна быть такой string myget(){считываем из cin символы с помощью get() и добавляем в строку; return строка} ????
Мб стоит попроще написать???

Добавлено через 1 минуту
alsav22, а я понял через указатель получаем результат, ну ок мб и так.
Молодец!
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
04.08.2013, 06:49
Если string, можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
void mycin(string &str)
{
    char ch;
    while (true)
    {
        ch = getc(stdin);
        if (ch != '\n')
            str += ch;
        else break;
    }
}
Добавлено через 2 минуты
Только как это сделать?
Цитата Сообщение от ninja2 Посмотреть сообщение
Сравните результат с реализацией операции >> для типа string.
Если только из файла...
1
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
04.08.2013, 08:43
ninja2, попробуйте как-нибудь так:
C++
1
2
3
4
5
void foo ( std::string & destString ) {
    std::streamsize count = std::cin.rdbuf ( ) -> in_avail ( ) ;
    destString.resize ( count ) ;
    std::cin.rdbuf ( ) -> sgetn ( & destString [ 0 ] , count ) ;
}
1
 Аватар для Misterkat
7 / 7 / 0
Регистрация: 16.11.2012
Сообщений: 84
04.08.2013, 11:52
Цитата Сообщение от ninja2 Посмотреть сообщение
И вообще чем можно заменить cin?
String.h тебе в помощь.

Не по теме:

Изобретаем велосипед. :)

0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
04.08.2013, 12:29  [ТС]
Цитата Сообщение от Misterkat Посмотреть сообщение
Изобретаем велосипед.
Да велоспед, но это так в учебных целях.
0
04.08.2013, 12:37

Не по теме:

Цитата Сообщение от ninja2 Посмотреть сообщение
Да велоспед, но это так в учебных целях.
В учебных целях это полезно. :)
ЗЫ:Удачи. :)

1
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
04.08.2013, 19:25
Как вот это сделать?
Цитата Сообщение от ninja2 Посмотреть сообщение
Сравните результат с реализацией операции >> для типа string.
Что значит "сравнить"? По скорости чтения? Тогда как?
Настораживает вот это:
Цитата Сообщение от ninja2 Посмотреть сообщение
Допустимо организовать интерфейс функции в угоду быстродействию (даже за счет некоторого неудобства в использовании)
Это намёк на что? Все предложенные варианты, интерфейс никак не меняют...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.08.2013, 19:25
Помогаю со студенческими работами здесь

Как работает cin.peek, cin,get, cin.ignore, cin.clear?
Здравствуйте, товарищи и не товарищи!:) Я только начал изучать C++, а уже использую вещи, которые мне не понятны, и прошу объяснить, как...

Какую библиотеку надо подключать чтоб работала функция _getch() и функция cin.get()?
какую библиотеку надо подключать чтоб работала функция _getch() и функция cin.get()

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная "защита от дурака" на ввод. Не пойму предназначение cin.get()...

Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear()
Такая проблема: сдаю в вуза лабораторные по программированию, писал все сам, до этого c++ не изучал, поэтому возникали некоторые проблемы....

Поток ввода cin
vector<string> str; for (string s; cin >> s && !s.empty(); str.push_back(s)); // !!! for (auto &i : str) for (auto &j : i) j...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru