Ну таки cout - действительно мусор, непригодный к использованию. Мне непонятно, почему в стандарте до сих пор нет strprintf - как sprintf, но в std::string. Я ее пишу на каждом месте где работаю (и я не один такой). И от исключений действительно надо держаться подальше (хотя изредка в них и находится польза).
no subject