Другие языки программирования и технологии
C++ как можно без переменных все в потоке выкинуть назад?
пробовал так std::cout << cin.get(); выкидывает только код одного символа :( да и вообще как что-нибудь копить в потоке? спасибо за ответы)
Не знаю что у Вас там за задумка, но вроде при вводе-выводе инфа храниться в буфере-массиве, зачем ее туда-сюда перекидывать, а эта художественная уловка "<<" вообще битовый сдвиг влево, я в шоке как ее сандалят в отладочные cin<->cout?!Только Бьерн Страуструп вкурсе
Женя Копкин
Это что то наподобие getchar()! Но она вычеркнута из стандарта, знай, теперь нужно следить за памятью, шаг влево-шаг вправо, значится ошибка сегментирования)))
#include <iostream>
using namespace std;
int main() {
for (;;)
cout << (char)cin.get();
}
Проблема этой программы в том, что она не воспринимает признак "конец файла". Исправить это без использования переменной наверно невозможно.
При вводе с клавиатуры работу программы можно прервать вводом Ctrl-C. Но при вводе из потока программа зациклится после окончания потока и будет непрерывно выводить символ с кодом 255.
using namespace std;
int main() {
for (;;)
cout << (char)cin.get();
}
Проблема этой программы в том, что она не воспринимает признак "конец файла". Исправить это без использования переменной наверно невозможно.
При вводе с клавиатуры работу программы можно прервать вводом Ctrl-C. Но при вводе из потока программа зациклится после окончания потока и будет непрерывно выводить символ с кодом 255.
А зачем этот изврат нужен - именно без промежуточной переменной?
И, похоже, он не имеет решений.
Нужно найти функцию, которая бы возвращала строку как результат, а не через параметр.
Но варианты такого рода, читающие поток целиком:
std::cout << std::string{std::istreambuf_iterator{std::cin}, {}};
не работают, т. к. при попытке чтения потока целиком, оно не будет прерываться по Enter.
Остаются только те варианты, которые читают построчно, вроде std::getline()
Но функций, которые бы при этом возвращали string или что-то конвертируемое в него, в STL найти не удается.
std::getline() возвращает тот же самый istream, который ей дали на вход и который нельзя читать полностью, поэтому не подходит.
std::cin.getline() - тоже.
И, похоже, он не имеет решений.
Нужно найти функцию, которая бы возвращала строку как результат, а не через параметр.
Но варианты такого рода, читающие поток целиком:
std::cout << std::string{std::istreambuf_iterator{std::cin}, {}};
не работают, т. к. при попытке чтения потока целиком, оно не будет прерываться по Enter.
Остаются только те варианты, которые читают построчно, вроде std::getline()
Но функций, которые бы при этом возвращали string или что-то конвертируемое в него, в STL найти не удается.
std::getline() возвращает тот же самый istream, который ей дали на вход и который нельзя читать полностью, поэтому не подходит.
std::cin.getline() - тоже.
Похожие вопросы
- Раздел описания переменных в C++: правила задания имени переменной.
- C++ программирование. Булевые (логические) переменные.
- Зачем нужны указатели в c++? Нельзя ли обычными переменными пользоваться?
- Как преобразовать строки файла в переменные (C#)?
- Как в C++ приравнять переменную и текст? А то такую запись нельзя. А без этого задачу не решить
- C#. Как сделать, чтобы программа проверяла тип введённой переменной?
- [C/C++] Oбъявление переменной типа структуры в этой же структуре
- [C++] Почему не рекомендуют использовать глобальные переменные?
- C++ Классы и Переменные
- c++, переменные ...