Я пытаюсь ввести строки, которые могут содержать пробелы. Вся строка может быть сделана из пробелов.
Вот что я делаю
Здесь нет тестовых случаев.
Скажем, для m = 3, у меня есть этот вход
Для наглядности — используется для представления пробелов. На входе вместо пробелов — ,
Это вывод, который я получаю
Еще одна вещь, которую я попробовал это
где m = 3, n = 2 для примера выше. Но печать этого arr дает мне следующий вывод:
Я не уверен, почему я получаю этот вывод. Почему я получаю NUL вместо пробелов. Также в первом коде я получаю вывод NUL до # ,это почему?
Решение
Нет необходимости писать такой сложный код для получения пробелов из cin , Вы можете просто воспользоваться std::noskipws флаг.
Решение 1:
Решение 2:
или даже проще, без каких-либо string :
Решение 3:
Другие решения
Вы печатаете str[0] — это не строка, это один символ. Когда ваша строка пуста, единственное, что в ней содержится, это null-terminator ( ‘’ ). И когда вы получаете доступ к первому элементу вашей строки с [] , вы получаете доступ к этому нулевому терминатору. И поскольку вы печатаете его как символ, вы видите NUL в качестве вывода.
0 [2015-08-24 15:36:00]
Я пытаюсь ввести строки, которые могут содержать пробелы. Вся строка может быть сделана из пробелов. Вот что я doing-
Здесь t нет тестовых случаев. Скажем, для m = 3, у меня есть input-
Для видимости — используется для представления белых пробелов. В фактическом вводе есть белые пробелы вместо — . Это вывод я get-
Еще одна вещь, которую я пробовал, — this-
где m = 3, n = 2 для приведенного выше примера. Но печать этого arr дает мне следующее output-
Я не уверен, почему я получаю этот вывод. Почему я получаю NUL вместо белых пробелов. Также в первом коде вывод, который я получаю, равен NUL до # , почему?
Имя Фамилия Гуру (2596), закрыт 6 лет назад
#include
using namespace std;
int main()
<
string name;
setlocale( LC_ALL,»Russian» );
cout
Сделал так
#include «stdafx.h»
#include
#include
using namespace std;
int main()
<
string name;
setlocale( LC_ALL,»Russian» );
cout Лучший ответ
Источник: