std::showpos în C++

Formatare C++98

Afișează semnul + în fața numerelor pozitive (și a lui zero).

Sintaxă
#include <iomanip>
std::cout << std::showpos;    // +5
std::cout << std::noshowpos;  // 5

Ce face std::showpos

Implicit, numerele negative au semnul -, iar cele pozitive nu au semn. După std::showpos, pozitivele primesc +, ceea ce e util pentru diferențe, temperaturi sau variații de preț. Zero apare ca +0.

Rămâne activ până la std::noshowpos. Echivalentul în std::format este {:+}.

Exemple

Exemplul 1: Variația temperaturii

#include <iomanip>
#include <iostream>

int main() {
    int variatii[] = {3, -2, 0, 5};
    std::cout << std::showpos;
    for (int v : variatii) {
        std::cout << v << " grade\n";
    }
    std::cout << std::noshowpos << "Fără semn: " << 3 << '\n';
}

Rezultat

+3 grade
-2 grade
+0 grade
+5 grade
Fără semn: 3

Exemplul 2: Și pentru numere reale

#include <iomanip>
#include <iostream>

int main() {
    std::cout << std::showpos << std::fixed << std::setprecision(1);
    std::cout << "Leul față de euro: " << 0.4 << "%\n";
    std::cout << "Bursa azi: " << -1.27 << "%\n";
}

Rezultat

Leul față de euro: +0.4%
Bursa azi: -1.3%

Greșeli frecvente

  • Uiți std::noshowpos și toate numerele de după, inclusiv numerele din texte precum „pagina +2”, primesc semn.

Comenzi înrudite

  • std::setprecision: Controlează câte cifre sau zecimale au numerele reale afișate, cu fixed și scientific.
  • std::hex: Afișează și citește numerele întregi în baza 16 (hex), 8 (oct) sau 10 (dec).
  • std::format: Construiește un std::string dintr-un șablon cu acolade {} și valori (C++20).