<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 su ios_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 di in_stream è impostato su ios_base::failbit.

  • Altri errori diversi da quelli elencati in precedenza; il flag di stato interno di in_stream è impostato su ios_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 errnoo se il valore restituito non può essere rappresentato come oggetto di tipo , genera un oggetto di tipo intout_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.swapmembro 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" se value è di tipo int

  • "%u" se value è di tipo unsigned int

  • "%ld" se value è di tipo long

  • "%lu" se value è di tipo unsigned long

  • "%lld" se value è di tipo long long

  • "%llu" se value è di tipo unsigned long long

  • "%f" se value è di tipo float o double

  • "%Lf" se value è di tipo long 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" se value è di tipo int

  • L"%u" se value è di tipo unsigned int

  • L"%ld" se value è di tipo long

  • L"%lu" se value è di tipo unsigned long

  • L"%lld" se value è di tipo long long

  • L"%llu" se value è di tipo unsigned long long

  • L"%f" se value è di tipo float o double

  • L"%Lf" se value è di tipo long double

La funzione restituisce wstring(Buf).

Vedi anche

<string>