<string>
funzioni
getline
stod
stof
stoi
stol
stold
stoll
stoul
stoull
swap
to_string
to_wstring
getline
Estrarre stringhe dal flusso di input riga per riga.
// (1) delimiter as parameter
template <class CharType, class Traits, class Allocator>
basic_istream<CharType, Traits>& getline(
basic_istream<CharType, Traits>& in_stream,
basic_string<CharType, Traits, Allocator>& str,
CharType delimiter);
template <class CharType, class Traits, class Allocator>
basic_istream<CharType, Traits>& getline(
basic_istream<CharType, Traits>&& in_stream,
basic_string<CharType, Traits, Allocator>& str,
const CharType delimiter);
// (2) default delimiter used
template <class CharType, class Traits, class Allocator>
basic_istream<CharType, Traits>& getline(
basic_istream<CharType, Traits>& in_stream,
basic_string<CharType, Traits, Allocator>& str);
template <class Allocator, class Traits, class Allocator>
basic_istream<Allocator, Traits>& getline(
basic_istream<Allocator, Traits>&& in_stream,
basic_string<Allocator, Traits, Allocator>& str);
Parametri
in_stream
Flusso di input da cui estrarre una stringa.
str
Stringa in cui vengono letti i caratteri dal flusso di input.
delimiter
Delimitatore di riga.
Valore restituito
Flusso di input in_stream
.
Osservazioni:
La coppia di firme di funzione contrassegnata con (1)
estrae i caratteri da in_stream
finché non viene trovato delimiter
, archiviandoli in str
.
La coppia di firme di funzione contrassegnate (2)
usa la nuova riga come delimitatore di riga predefinito e si comporta come getline(in_stream, str, in_stream. widen('\n'))
.
La seconda funzione di ogni coppia è analogica alla prima per supportare rvalue
i riferimenti.
L'estrazione termina quando si verifica una delle condizioni seguenti:
Alla fine del file, nel qual caso il flag di stato interno di
in_stream
è impostato suios_base::eofbit
.Dopo che la funzione estrae un elemento che confronta uguale a
delimiter
. L'elemento non viene reinserato o accodato alla sequenza controllata.Dopo che la funzione estrae gli
str.max_size
elementi. Il flag di stato interno diin_stream
è impostato suios_base::failbit
.Altri errori diversi da quelli elencati in precedenza; il flag di stato interno di
in_stream
è impostato suios_base::badbit
.
Per informazioni sui flag di stato interni, vedere ios_base::iostate
.
Se la funzione non estrae alcun elemento, il flag di stato interno di in_stream
viene impostato su ios_base::failbit
. In ogni caso, getline
restituisce in_stream
.
Se viene generata un'eccezione, in_stream
e str
rimangono in uno stato valido.
Esempio
Il codice seguente illustra getline()
secondo due modalità: la prima con il delimitatore predefinito (carattere di nuova riga) e la seconda con uno spazio vuoto come delimitatore. Il carattere di fine file (CTRL-Z sulla tastiera) viene usato per controllare la terminazione dei cicli while. Questo valore imposta il flag di stato interno di cin
su eofbit
, che deve essere cancellato con basic_ios::clear()
prima del secondo ciclo while funzionerà correttamente.
// compile with: /EHsc /W4
#include <string>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
string str;
vector<string> v1;
cout << "Enter a sentence, press ENTER between sentences. (Ctrl-Z to stop): " << endl;
// Loop until end-of-file (Ctrl-Z) is input, store each sentence in a vector.
// Default delimiter is the newline character.
while (getline(cin, str)) {
v1.push_back(str);
}
cout << "The following input was stored with newline delimiter:" << endl;
for (const auto& p : v1) {
cout << p << endl;
}
cin.clear();
vector<string> v2;
// Now try it with a whitespace delimiter
while (getline(cin, str, ' ')) {
v2.push_back(str);
}
cout << "The following input was stored with whitespace as delimiter:" << endl;
for (const auto& p : v2) {
cout << p << endl;
}
}
stod
Converte una sequenza di caratteri in double
.
double stod(
const string& str,
size_t* idx = 0);
double stod(
const wstring& str,
size_t* idx = 0
;
Parametri
str
Sequenza di caratteri da convertire.
idx
Valore di indice del primo carattere non convertito.
Valore restituito
Valore double
.
Osservazioni:
La funzione converte la sequenza di elementi in in str
un valore di tipo double
come se chiamando strtod( str.c_str(), _Eptr)
, dove _Eptr
è un oggetto interno alla funzione . Se str.c_str() == *_Eptr
, genera un oggetto di tipo invalid_argument
. Se tale chiamata imposta errno
, viene generato un oggetto di tipo out_of_range
. In caso contrario, se idx
non è un puntatore Null, la funzione archivia *_Eptr - str.c_str()
in *idx
e restituisce il valore.
stof
Converte una sequenza di caratteri in un tipo float.
float stof(
const string& str,
size_t* idx = 0);
float stof(
const wstring& str,
size_t* idx = 0);
Parametri
str
Sequenza di caratteri da convertire.
idx
Valore di indice del primo carattere non convertito.
Valore restituito
Valore float
.
Osservazioni:
La funzione converte la sequenza di elementi in in str
un valore di tipo float
come se chiamando strtof( str.c_str(), _Eptr)
, dove _Eptr
è un oggetto interno alla funzione . Se str.c_str() == *_Eptr
, genera un oggetto di tipo invalid_argument
. Se tale chiamata imposta errno
, viene generato un oggetto di tipo out_of_range
. In caso contrario, se idx
non è un puntatore Null, la funzione archivia *_Eptr - str.c_str()
in *idx
e restituisce il valore.
stoi
Converte una sequenza di caratteri in un Integer.
int stoi(
const string& str,
size_t* idx = 0,
int base = 10);
int stoi(
const wstring& str,
size_t* idx = 0,
int base = 10);
Valore restituito
Valore Integer.
Parametri
str
Sequenza di caratteri da convertire.
idx
Valore di indice del primo carattere non convertito.
base
Base numerica da usare.
Osservazioni:
La funzione stoi
converte la sequenza di caratteri in str in un valore di tipo int
e restituisce il valore . Ad esempio, se viene passata la sequenza di caratteri "10", il valore restituito da stoi
sarà 10.
stoi
si comporta in modo analogo alla funzione strtol
per i caratteri a byte singolo quando viene chiamata nel modo strtol( str.c_str(), _Eptr, idx)
, dove _Eptr
è un oggetto interno alla funzione; o wcstol
per i caratteri wide, quando viene chiamato in modo simile, wcstol(Str.c_str(), _Eptr, idx)
. Per altre informazioni, vedere strtol
, wcstol
, _strtol_l
, _wcstol_l
.
Se str.c_str() == *_Eptr
, stoi
genera un oggetto di tipo invalid_argument
. Se una chiamata di questo tipo imposta errno
o se il valore restituito non può essere rappresentato come oggetto di tipo , genera un oggetto di tipo int
out_of_range
. In caso contrario, se idx non è un puntatore Null, la funzione archivia *_Eptr - str.c_str()
in *idx
.
stol
Converte una sequenza di caratteri in long
.
long stol(
const string& str,
size_t* idx = 0,
int base = 10);
long stol(
const wstring& str,
size_t* idx = 0,
int base = 10);
Parametri
str
Sequenza di caratteri da convertire.
idx
Valore di indice del primo carattere non convertito.
base
Base numerica da usare.
Valore restituito
Valore Long Integer.
Osservazioni:
La funzione converte la sequenza di elementi in str in un valore di tipo long
come se chiamando strtol( str.c_str(), _Eptr, idx)
, dove _Eptr
è un oggetto interno alla funzione. Se str.c_str() == *_Eptr
, genera un oggetto di tipo invalid_argument
. Se tale chiamata imposta errno
, viene generato un oggetto di tipo out_of_range
. In caso contrario, se idx
non è un puntatore Null, la funzione archivia *_Eptr - str.c_str()
in *idx
e restituisce il valore.
stold
Converte una sequenza di caratteri in long double
.
double stold(
const string& str,
size_t* idx = 0);
double stold(
const wstring& str,
size_t* idx = 0);
Parametri
str
Sequenza di caratteri da convertire.
idx
Valore di indice del primo carattere non convertito.
Valore restituito
Valore long double
.
Osservazioni:
La funzione converte la sequenza di elementi in str in un valore di tipo long double
come se chiamando strtold( str.c_str(), _Eptr)
, dove _Eptr
è un oggetto interno alla funzione. Se str.c_str() == *_Eptr
, genera un oggetto di tipo invalid_argument
. Se tale chiamata imposta errno
, viene generato un oggetto di tipo out_of_range
. In caso contrario, se idx
non è un puntatore Null, la funzione archivia *_Eptr - str.c_str()
in *idx
e restituisce il valore.
stoll
Converte una sequenza di caratteri in long long
.
long long stoll(
const string& str,
size_t* idx = 0,
int base = 10);
long long stoll(
const wstring& str,
size_t* idx = 0,
int base = 10);
Parametri
str
Sequenza di caratteri da convertire.
idx
Valore di indice del primo carattere non convertito.
base
Base numerica da usare.
Valore restituito
Valore long long
.
Osservazioni:
La funzione converte la sequenza di elementi in str in un valore di tipo long long
come se chiamando strtoll( str.c_str(), _Eptr, idx)
, dove _Eptr
è un oggetto interno alla funzione. Se str.c_str() == *_Eptr
, genera un oggetto di tipo invalid_argument
. Se tale chiamata imposta errno
, viene generato un oggetto di tipo out_of_range
. In caso contrario, se idx non è un puntatore Null, la funzione archivia *_Eptr - str.c_str()
in *idx
e restituisce il valore.
stoul
Converte una sequenza di caratteri in un tipo unsigned long.
unsigned long stoul(
const string& str,
size_t* idx = 0,
int base = 10);
unsigned long stoul(
const wstring& str,
size_t* idx = 0,
int base = 10);
Parametri
str
Sequenza di caratteri da convertire.
idx
Valore di indice del primo carattere non convertito.
base
Base numerica da usare.
Valore restituito
Valore Unsigned Long Integer.
Osservazioni:
La funzione converte la sequenza di elementi in str in un valore di tipo unsigned long
come se chiamando strtoul( str.c_str(), _Eptr, idx)
, dove _Eptr
è un oggetto interno alla funzione. Se str.c_str() == *_Eptr
, genera un oggetto di tipo invalid_argument
. Se tale chiamata imposta errno
, viene generato un oggetto di tipo out_of_range
. In caso contrario, se idx non è un puntatore Null, la funzione archivia *_Eptr - str.c_str()
in *idx
e restituisce il valore.
stoull
Converte una sequenza di caratteri in un tipo unsigned long long
.
unsigned long long stoull(
const string& str,
size_t* idx = 0,
int base = 10);
unsigned long long stoull(
const wstring& str,
size_t* idx = 0,
int base = 10);
Parametri
str
Sequenza di caratteri da convertire.
idx
Valore di indice del primo carattere non convertito.
base
Base numerica da usare.
Valore restituito
Valore unsigned long long
.
Osservazioni:
La funzione converte la sequenza di elementi in str in un valore di tipo unsigned long long
come se chiamando strtoull( str.c_str(), _Eptr, idx)
, dove _Eptr
è un oggetto interno alla funzione. Se str.c_str() == *_Eptr
, genera un oggetto di tipo invalid_argument
. Se tale chiamata imposta errno
, viene generato un oggetto di tipo out_of_range
. In caso contrario, se idx
non è un puntatore Null, la funzione archivia *_Eptr - str.c_str()
in *idx
e restituisce il valore.
swap
Scambia le matrici di caratteri di due stringhe.
template <class Traits, class Allocator>
void swap(basic_string<CharType, Traits, Allocator>& left, basic_string<CharType, Traits, Allocator>& right);
Parametri
left
Stringa i cui elementi devono essere scambiati con gli elementi di un'altra stringa.
right
Altra stringa di cui scambiare gli elementi con quelli della prima stringa.
Osservazioni:
La funzione modello esegue la funzione left.swap
membro specializzata (right
) per le stringhe, che garantisce una complessità costante.
Esempio
// string_swap.cpp
// compile with: /EHsc
#include <string>
#include <iostream>
int main( )
{
using namespace std;
// Declaring an object of type basic_string<char>
string s1 ( "Tweedledee" );
string s2 ( "Tweedledum" );
cout << "Before swapping string s1 and s2:" << endl;
cout << "The basic_string s1 = " << s1 << "." << endl;
cout << "The basic_string s2 = " << s2 << "." << endl;
swap ( s1 , s2 );
cout << "\nAfter swapping string s1 and s2:" << endl;
cout << "The basic_string s1 = " << s1 << "." << endl;
cout << "The basic_string s2 = " << s2 << "." << endl;
}
Before swapping string s1 and s2:
The basic_string s1 = Tweedledee.
The basic_string s2 = Tweedledum.
After swapping string s1 and s2:
The basic_string s1 = Tweedledum.
The basic_string s2 = Tweedledee.
to_string
Converte un valore in un valore string
.
string to_string(int value);
string to_string(unsigned int value);
string to_string(long value);
string to_string(unsigned long value);
string to_string(long long value);
string to_string(unsigned long long value);
string to_string(float value);
string to_string(double value);
string to_string(long double value);
Parametri
value
Valore da convertire.
Valore restituito
Valore string
che rappresenta il valore X.
Osservazioni:
La funzione converte il valore in una sequenza di elementi archiviati in un oggetto Buf
matrice interno alla funzione come se chiamando sprintf(Buf, Fmt, value)
, dove Fmt
è
"%d"
sevalue
è di tipoint
"%u"
sevalue
è di tipounsigned int
"%ld"
sevalue
è di tipolong
"%lu"
sevalue
è di tipounsigned long
"%lld"
sevalue
è di tipolong long
"%llu"
sevalue
è di tipounsigned long long
"%f"
sevalue
è di tipofloat
odouble
"%Lf"
sevalue
è di tipolong double
La funzione restituisce string(Buf)
.
to_wstring
Converte un valore in un valore string di tipo wide.
wstring to_wstring(int value);
wstring to_wstring(unsigned int value);
wstring to_wstring(long value);
wstring to_wstring(unsigned long value);
wstring to_wstring(long long value);
wstring to_wstring(unsigned long long value);
wstring to_wstring(float value);
wstring to_wstring(double value);
wstring to_wstring(long double value);
Parametri
value
Valore da convertire.
Valore restituito
Stringa a caratteri "wide" che rappresenta il valore.
Osservazioni:
La funzione converte value
in una sequenza di elementi archiviati in un oggetto matrice Buf
interno alla funzione come se venisse chiamato swprintf(Buf, Len, Fmt, value)
, in cui Fmt
è
L"%d"
sevalue
è di tipoint
L"%u"
sevalue
è di tipounsigned int
L"%ld"
sevalue
è di tipolong
L"%lu"
sevalue
è di tipounsigned long
L"%lld"
sevalue
è di tipolong long
L"%llu"
sevalue
è di tipounsigned long long
L"%f"
sevalue
è di tipofloat
odouble
L"%Lf"
sevalue
è di tipolong double
La funzione restituisce wstring(Buf)
.