Другие языки программирования и технологии

C++ как можно без переменных все в потоке выкинуть назад?

пробовал так std::cout << cin.get(); выкидывает только код одного символа :( да и вообще как что-нибудь копить в потоке? спасибо за ответы)
Не знаю что у Вас там за задумка, но вроде при вводе-выводе инфа храниться в буфере-массиве, зачем ее туда-сюда перекидывать, а эта художественная уловка "<<" вообще битовый сдвиг влево, я в шоке как ее сандалят в отладочные cin<->cout?!Только Бьерн Страуструп вкурсе
ЖК
Женя Копкин
3 832
Лучший ответ
Женя Копкин Это что то наподобие getchar()! Но она вычеркнута из стандарта, знай, теперь нужно следить за памятью, шаг влево-шаг вправо, значится ошибка сегментирования)))
#include <iostream>
using namespace std;
int main() {
for (;;)
cout << (char)cin.get();
}

Проблема этой программы в том, что она не воспринимает признак "конец файла". Исправить это без использования переменной наверно невозможно.
При вводе с клавиатуры работу программы можно прервать вводом Ctrl-C. Но при вводе из потока программа зациклится после окончания потока и будет непрерывно выводить символ с кодом 255.
Anton T
Anton T
36 282
А зачем этот изврат нужен - именно без промежуточной переменной?

И, похоже, он не имеет решений.

Нужно найти функцию, которая бы возвращала строку как результат, а не через параметр.

Но варианты такого рода, читающие поток целиком:
std::cout << std::string{std::istreambuf_iterator{std::cin}, {}};
не работают, т. к. при попытке чтения потока целиком, оно не будет прерываться по Enter.

Остаются только те варианты, которые читают построчно, вроде std::getline()

Но функций, которые бы при этом возвращали string или что-то конвертируемое в него, в STL найти не удается.

std::getline() возвращает тот же самый istream, который ей дали на вход и который нельзя читать полностью, поэтому не подходит.

std::cin.getline() - тоже.
Илья Джура
Илья Джура
5 149