Как добавить символ новой строки и конкатенацию в тройном условном операторе? : в с ++ - PullRequest
0 голосов
/ 06 января 2020

Я хочу переписать этот код, используя троичный условный оператор? : в C ++, но я не могу добавить новую строку (которая выражается здесь как endl) или объединить пустую строку

if (n % 10 == 0) {cout << n << endl;}
else {cout << n << " ";}

, когда используется этот код

cout << (n % 10 == 0 ? n + "\n" : n + " ");

это не ' t выдаст правильный вывод, он выдаст «@» (без двойных кавычек), если я назначу 10 для n, и выдаст «, @», если я назначу 11 для n

Ответы [ 3 ]

4 голосов
/ 06 января 2020

Чтобы расширить ответ acraig5075 (в C ++ нет оператора + для конкатенации строки в целое число, хотя она может быть записана), можно

cout << n << (n % 10 == 0 ? "\n" : " ");

Делать его более понятным при печати n, затем либо пробел, либо новая строка, в зависимости от значения n.

2 голосов
/ 06 января 2020

Нельзя добавить строковый литерал к целому числу. Вместо этого вы должны сначала построить желаемую выходную строку, например, используя std::to_string.

Изменить

cout << (n % 10 == 0 ? n + "\n" : n + " ");

на

cout << (n % 10 == 0 ? std::to_string(n) + "\n" : std::to_string(n) + " ");
0 голосов
/ 06 января 2020
cout << n << (n % 10 ? " ": endl);  // if remainder is not zero put " "
...