Как взять строку ввода до конца строки в C ++ без использования getline - PullRequest
0 голосов
/ 03 мая 2018

Я пишу программу на C ++ Входная строка для того же содержит строку, которая содержит буквенно-цифровой символ, символы, пробелы. Мне нужно принять ввод до конца строки, что означает конец входной строки

Попытка с использованием do while, как показано ниже, но while (value != '\n' || value != '\0'); никогда не будет удовлетворена, и даже после нажатия вводить цикл while не выходит

do
{
    cin >> value;
    inputString.push(value);
} while (value != '\n' || value != '\0');

Пример строки ввода -

I am :IronnorI Ma, i

P.S. - Я не могу использовать библиотеку getline, string из-за некоторых ограничений кодирования, применимых в конкурсах кодирования

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

Условие while никогда не может быть ложным и прерывать цикл.

Если значение равно любому другому символу, кроме '\ n' или '\ 0', оно, очевидно, будет истинным, и цикл продолжится.

Но, предполагая, что значение равно '\ n'. Условие оценивается как while ('\n' != '\n' || '\n' != '\0'), таким образом while (false || true), таким образом while (true).

Теперь при условии, что значение равно '\ 0': while ('\0' != '\n' || '\0' != '\0') равно while (true || false) равно while (true).

Что вам нужно (как условие), это что-то вроде while (! (value == '\n' || value == '\0')) или (возможно, лучше) while (value != '\n' && value != '\0').

0 голосов
/ 04 мая 2018

Пришлось игнорировать пробел '\n', который был там во время первого ввода а затем используйте cin.get(), чтобы получить всю строку в виде строки

cin >> noOfTestCases >> ws;

do
{
  cin.get(value);
  inputString.push(value);
} while (value != '\n' && value != '\0');
0 голосов
/ 03 мая 2018

cin >> value;, как и все отформатированные функции ввода, пропускает все пробелы при поиске следующего символа для чтения. Пробел включает в себя '\n', поэтому он никогда не будет прочитан.

Чтобы прочитать все символов, включая пробелы, вы можете использовать неформатированную функцию ввода, например cin.get(value).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...