Поэтому у меня проблема в оболочке 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.*
Для того, чтобы собрать все содержимое, которое можно использовать while
цикл или какой - либо другой вариант, например, как for
цикла:
std::string content;
for (std::string line; std::getline(std::cin, line); )
{
content += line;
}