std::quoted în C++

Formatare C++14

Scrie un text între ghilimele sau citește un text între ghilimele, cu spații cu tot.

Sintaxă
#include <iomanip>
flux_iesire << std::quoted(text);
flux_intrare >> std::quoted(text);

Ce face std::quoted

La scriere, std::quoted("Ana Maria") produce "Ana Maria". Ghilimelele din interiorul textului sunt precedate de \, ca să poată fi citite înapoi.

La citire, flux >> std::quoted(s) citește tot ce este între ghilimele, inclusiv spațiile, și elimină ghilimelele. Așa poți salva și citi texte cu spații dintr-un fișier simplu, fără să le pierzi la primul spațiu.

Parametri

Parametru Descriere
text Șirul de scris sau în care se citește. Opțional: caracterul de delimitare (implicit ") și cel de escape (implicit \).

Exemple

Exemplul 1: Afișarea între ghilimele

#include <iomanip>
#include <iostream>
#include <string>

int main() {
    std::string titlu = "Ion";
    std::string replica = "El a zis \"Bună ziua\"";
    std::cout << std::quoted(titlu) << '\n';
    std::cout << std::quoted(replica) << '\n';
    std::cout << std::quoted("Iași", '\'') << '\n';
}

Rezultat

"Ion"
"El a zis \"Bună ziua\""
'Iași'

Exemplul 2: Citirea unui nume cu spații

Fără quoted, >> ar citi doar "Ana. Cu quoted, numele complet ajunge în variabilă.

#include <iomanip>
#include <iostream>
#include <sstream>
#include <string>

int main() {
    std::istringstream linie("\"Ana Maria\" 21 \"Piatra Neamț\"");
    std::string nume, oras;
    int varsta;
    linie >> std::quoted(nume) >> varsta >> std::quoted(oras);
    std::cout << "Nume: " << nume << "\nVârsta: " << varsta << "\nOraș: " << oras << '\n';
}

Rezultat

Nume: Ana Maria
Vârsta: 21
Oraș: Piatra Neamț

Greșeli frecvente

  • Citești cu std::quoted un text care nu începe cu ghilimele: atunci se comportă ca >> obișnuit și se oprește la primul spațiu.

Comenzi înrudite

  • std::getline: Citește un rând întreg, cu spații cu tot, într-un std::string.
  • std::stringstream: Flux care scrie și citește într-un șir din memorie; str() îi dă sau îi schimbă textul.
  • std::ofstream: Creează sau deschide un fișier pentru scriere și scrie în el la fel ca în std::cout.