перенаправление содержимого файла в качестве стандартного ввода в исполняемый файл linux

0

Поэтому у меня проблема в оболочке SSH. У меня есть файл proj1.cpp, который читает текст со стандартного ввода в строку под названием " word ". Впоследствии я использую make файл, чтобы скомпилировать его в исполняемый файл (proj1.x). Затем в SSH-оболочке я делаю команду типа "proj1.x <test0", которая перенаправляет содержимое файла "test0" на стандартный ввод "proj1.x" (в основном, чтобы поместить текст в test0 в строку программы " слово "). Он работает нормально, но кажется, что он отключается после прочтения примерно около 30 символов. Однако, когда я просто запускаю "proj1.cpp" с блоками кода или что-то еще, все работает нормально (для строки текста я ввожу свой размер) Поэтому я не знаю, в чем проблема.

Я думал, что проблема в том, что я использую "getline (cin, word)"; который читается в 1 строке текста со стандартного ввода в строку с именем "слово", но некоторые из содержимого файлов, которые я перенаправляю, имеют несколько строк. Какой код я использовал бы для чтения всего текста со стандартного ввода (думаю, до тех пор, пока программа не будет завершена?) Поэтому, когда я перенаправляю файл на стандартный ввод, он считывает все содержимое и загружает их в строку " word" ". Возможно, цикл while? Или, пожалуйста, прокомментируйте, если вы считаете, что это другая проблема.

что я сейчас использую:

string word;
getline(cin, word);

мой makefile:

proj1.x: proj1.cpp
    $(CXX) -o $@ $<

clean: 
    rm -f *.o *.x core.*
Теги:
makefile
ssh

1 ответ

0
Лучший ответ

Для того, чтобы собрать все содержимое, которое можно использовать while цикл или какой - либо другой вариант, например, как for цикла:

std::string content;

for (std::string line; std::getline(std::cin, line); )
{
    content += line;
}
  • 0
    Это сработало! Это была проблема. Спасибо вам большое!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню