Подскажите можно ли как-то записать в 1 строчку следующий код:
std::cout << "info: ";
if (isEq)
std::cout << "value: " << value1 << std::endl;
else
std::cout << "data: " << data1 << std::endl;
На что-то подобное
std::cout << "info " << ((isEq) ? ("value: " << value1) : ("data: " << data1)) << std::endl;
Можно, но не так - так у вас получается
("value: " << value1)
но оператор <<
к строке неприменим.
А вот так - да:
std::cout << "info " << (isEq ? "value: " : "data: ")
<< (isEq ? value1 : data1) << std::endl;
Понятно, что типы value1
и data
должны быть совместимыми - например, int
и double
- будет выполнено приведение, как в арифметическом выражении. Если несовместимые - то вернитесь к своей первой (более понятной) записи.
Можно:
std::cout << "info: " << (isEq ? ("value: " + std::to_string(value1)) : ("data: " + std::to_string(data1))) << std::endl;
Но мне кажется, читаемость получившегося кода намного хуже того, что приведено у вас :) .
Виртуальный выделенный сервер (VDS) становится отличным выбором
Зачем нужен флаг /EHsc для MSVC компилятора? Недавно увидел его в конфиге, почитал доки, но так и не понял о каких синхронных/асинхронных исключениях...
Постоянно вижу в различных учебниках такой синтаксис объявления структур