Я могу проверить, если значение <1, а затем найти ведущий ноль и удалить его. Не очень элегантно. </p>
Согласен, но это то, что вам нужно сделать, не осматривая локали, чтобы определить собственную версию ostream :: operator << (float). (Вы не хотите заниматься этим.) </p>
void float_without_leading_zero(float x, std::ostream &out) {
std::ostringstream ss;
ss.copyfmt(out);
ss.width(0);
ss << x;
std::string s = ss.str();
if (s.size() > 1 && s[0] == '0') {
s.erase(0);
}
out << s;
}