Повышение-х lexical_cast
, который преобразует числа (или произвольные объекты) в строки и обратно. Должен ли я использовать это больше, скажем, вместо того, чтобы передавать std::stringstream
s? Или это скорее механизм последней инстанции?
Вот один пример двух альтернативных подходов:
std::stringstream message;
message << "foo " << bar << ' ' << baz;
doSomething(message.str());
или же
doSomething("foo " + lexical_cast<string>(bar) + " " + lexical_cast<string>(baz));
(но обратите внимание, мой вопрос носит более общий характер).
Лексическое приведение не «в основном» конвертирует числа. Это механизм для всего, что связано с текстом. И да, это зависит. Я свободно использую lexical_cast, но я без колебаний использую std :: stoi, std :: to_string, Boost {Spirit | Format | Serializaton} в зависимости от варианта использования.
Короче говоря: это не механизм последней инстанции. Это также не конец, все-быть-все решение.
Фон
Я бы сказал, что вы всегда должны использовать lexical_cast при преобразовании строки в число, потому что без него вы не узнаете, действительно ли это было число или нет (исключение неправильного лексического приведения). Поток строк ничего не выбрасывает и оставляет число неинициализированным.