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::quotedun 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.