funciones<string>

getline
stod
stof
stoi
stol
stold
stoll
stoul
stoull
swap
to_string
to_wstring

getline

Extraiga las cadenas de la secuencia de entrada línea por línea.

// (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);

Parámetros

in_stream
La secuencia de entrada de la que se extraerá una cadena.

str
La cadena en la que se leen los caracteres de la secuencia de entrada.

delimiter
El delimitador de línea.

Valor devuelto

La secuencia de entrada in_stream.

Comentarios

El par de firmas de función marcado como (1) extrae caracteres de in_stream hasta encontrar delimiter y los almacena en str.

El par de firmas de función marcado como (2) usa una nueva línea como el delimitador de línea predeterminado y se comporta como getline(in_stream, str, in_stream. widen('\n')).

La segunda función de cada par es análoga a la primera para admitir rvalue referencias.

La extracción se detiene en los siguientes casos:

  • El fin de archivo, en cuyo caso la marca de estado interno de in_stream se establece en ios_base::eofbit.

  • Después de que la función extraiga un elemento que resulta igual a delimiter. El elemento no se devuelve ni se anexa a la secuencia controlada.

  • Después de que la función extraiga str.max_size elementos. La marca de estado interno de in_stream se establece en ios_base::failbit.

  • Otros errores distintos de los que mencionamos; la marca de estado interno de in_stream se establece en ios_base::badbit.

Para obtener información sobre las marcas de estado interno, consulte ios_base::iostate.

Si la función no extrae ningún elemento, la marca de estado interno de in_stream se establece en ios_base::failbit. En cualquier caso, getline devuelve in_stream.

Si se lanza una excepción, in_stream y str se dejan en un estado válido.

Ejemplo

El código siguiente muestra getline() en dos modos: primero, con el delimitador predeterminado (nueva línea) y, después, con un espacio en blanco como delimitador. El carácter de fin de archivo (CTRL-Z en el teclado) se utiliza para controlar la terminación de los bucles while. Este valor establece la marca de estado interno de cin en eofbit, que se debe borrar con basic_ios::clear() para que el segundo bucle while funcione correctamente.

// 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

Convierte una secuencia de caracteres en una double.

double stod(
    const string& str,
    size_t* idx = 0);

double stod(
    const wstring& str,
    size_t* idx = 0
;

Parámetros

str
La secuencia de caracteres que se convertirá.

idx
El valor del índice del primer carácter que no se convertirá.

Valor devuelto

Valor de tipo double.

Comentarios

La función convierte la secuencia de elementos de str en un valor de tipo double como si se llamara a strtod( str.c_str(), _Eptr), donde _Eptr es un objeto interno de la función. Si str.c_str() == *_Eptr, lanza un objeto de tipo invalid_argument. Si esa llamada, al ejecutarse, establecería errno, lanza un objeto de tipo out_of_range. Si no, siempre que idx no sea un puntero nulo, la función almacena *_Eptr - str.c_str() en *idx y devuelve el valor.

stof

Convierte una secuencia de caracteres en un float.

float stof(
    const string& str,
    size_t* idx = 0);

float stof(
    const wstring& str,
    size_t* idx = 0);

Parámetros

str
La secuencia de caracteres que se convertirá.

idx
El valor del índice del primer carácter que no se convertirá.

Valor devuelto

Valor de tipo float.

Comentarios

La función convierte la secuencia de elementos de str en un valor de tipo float como si se llamara a strtof( str.c_str(), _Eptr), donde _Eptr es un objeto interno de la función. Si str.c_str() == *_Eptr, lanza un objeto de tipo invalid_argument. Si esa llamada, al ejecutarse, establecería errno, lanza un objeto de tipo out_of_range. Si no, siempre que idx no sea un puntero nulo, la función almacena *_Eptr - str.c_str() en *idx y devuelve el valor.

stoi

Convierte una secuencia de caracteres en un entero.

int stoi(
    const string& str,
    size_t* idx = 0,
    int base = 10);

int stoi(
    const wstring& str,
    size_t* idx = 0,
    int base = 10);

Valor devuelto

El valor del entero.

Parámetros

str
La secuencia de caracteres que se convertirá.

idx
El valor del índice del primer carácter que no se convertirá.

base
La base numérica que se usará.

Comentarios

La función stoi convierte la secuencia de caracteres de str en un valor de tipo int y devuelve el valor. Por ejemplo, cuando se pasa la secuencia de caracteres “10”, el valor devuelto por stoi es el número entero 10.

stoi se comporta de manera similar a la función strtol con caracteres de byte único cuando se llama a esta función con la forma strtol( str.c_str(), _Eptr, idx), donde _Eptr es un objeto interno de la función. Con caracteres anchos, es similar a la función wcstol cuando se llama a esta función de modo similar, wcstol(Str.c_str(), _Eptr, idx). Para obtener más información, vea strtol, wcstol, _strtol_l, _wcstol_l.

Si str.c_str() == *_Eptr, stoi lanza un objeto del tipo invalid_argument. Si esa llamada establece errno, o si el valor devuelto no se puede representar como un objeto del tipo int, lanza un objeto del tipo out_of_range. Si no, siempre que idx no sea un puntero nulo, la función almacena *_Eptr - str.c_str() en *idx.

stol

Convierte una secuencia de caracteres en una 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);

Parámetros

str
La secuencia de caracteres que se convertirá.

idx
El valor del índice del primer carácter que no se convertirá.

base
La base numérica que se usará.

Valor devuelto

El valor de entero largo.

Comentarios

La función convierte la secuencia de elementos de str en un valor de tipo long como si se llamara a strtol( str.c_str(), _Eptr, idx), donde _Eptr es un objeto interno de la función. Si str.c_str() == *_Eptr, lanza un objeto de tipo invalid_argument. Si esa llamada, al ejecutarse, establecería errno, lanza un objeto de tipo out_of_range. Si no, siempre que idx no sea un puntero nulo, la función almacena *_Eptr - str.c_str() en *idx y devuelve el valor.

stold

Convierte una secuencia de caracteres en una long double.

double stold(
    const string& str,
    size_t* idx = 0);

double stold(
    const wstring& str,
    size_t* idx = 0);

Parámetros

str
La secuencia de caracteres que se convertirá.

idx
El valor del índice del primer carácter que no se convertirá.

Valor devuelto

Valor de tipo long double.

Comentarios

La función convierte la secuencia de elementos de str en un valor de tipo long double como si se llamara a strtold( str.c_str(), _Eptr), donde _Eptr es un objeto interno de la función. Si str.c_str() == *_Eptr, lanza un objeto de tipo invalid_argument. Si esa llamada, al ejecutarse, establecería errno, lanza un objeto de tipo out_of_range. Si no, siempre que idx no sea un puntero nulo, la función almacena *_Eptr - str.c_str() en *idx y devuelve el valor.

stoll

Convierte una secuencia de caracteres en una 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);

Parámetros

str
La secuencia de caracteres que se convertirá.

idx
El valor del índice del primer carácter que no se convertirá.

base
La base numérica que se usará.

Valor devuelto

Valor de tipo long long.

Comentarios

La función convierte la secuencia de elementos de str en un valor de tipo long long como si se llamara a strtoll( str.c_str(), _Eptr, idx), donde _Eptr es un objeto interno de la función. Si str.c_str() == *_Eptr, lanza un objeto de tipo invalid_argument. Si esa llamada, al ejecutarse, establecería errno, lanza un objeto de tipo out_of_range. Si no, siempre que idx no sea un puntero nulo, la función almacena *_Eptr - str.c_str() en *idx y devuelve el valor.

stoul

Convierte una secuencia de caracteres en un entero largo sin signo.

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);

Parámetros

str
La secuencia de caracteres que se convertirá.

idx
El valor del índice del primer carácter que no se convertirá.

base
La base numérica que se usará.

Valor devuelto

El valor del entero largo sin signo.

Comentarios

La función convierte la secuencia de elementos de str en un valor de tipo unsigned long como si se llamara a strtoul( str.c_str(), _Eptr, idx), donde _Eptr es un objeto interno de la función. Si str.c_str() == *_Eptr, lanza un objeto de tipo invalid_argument. Si esa llamada, al ejecutarse, establecería errno, lanza un objeto de tipo out_of_range. Si no, siempre que idx no sea un puntero nulo, la función almacena *_Eptr - str.c_str() en *idx y devuelve el valor.

stoull

Convierte una secuencia de caracteres en un 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);

Parámetros

str
La secuencia de caracteres que se convertirá.

idx
El valor del índice del primer carácter que no se convertirá.

base
La base numérica que se usará.

Valor devuelto

Valor de tipo unsigned long long.

Comentarios

La función convierte la secuencia de elementos de str en un valor de tipo unsigned long long como si se llamara a strtoull( str.c_str(), _Eptr, idx), donde _Eptr es un objeto interno de la función. Si str.c_str() == *_Eptr, lanza un objeto de tipo invalid_argument. Si esa llamada, al ejecutarse, establecería errno, lanza un objeto de tipo out_of_range. Si no, siempre que idx no sea un puntero nulo, la función almacena *_Eptr - str.c_str() en *idx y devuelve el valor.

swap

Intercambia las matrices de caracteres de dos cadenas.

template <class Traits, class Allocator>
void swap(basic_string<CharType, Traits, Allocator>& left, basic_string<CharType, Traits, Allocator>& right);

Parámetros

left
Una cadena cuyos elementos se deben intercambiar con los de otra cadena.

right
La otra cadena, cuyos elementos se deben intercambiar con los de la primera cadena.

Comentarios

La función de plantilla ejecuta la función miembro especializada left.swap(right) con las cadenas, lo que garantiza que la complejidad es constante.

Ejemplo

// 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

Convierte un valor en 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);

Parámetros

value
El valor que se va a convertir.

Valor devuelto

string que representa el valor.

Comentarios

La función convierte el valor en una secuencia de elementos almacenados en un objeto de matriz Buf interno de la función como si se llamara a sprintf(Buf, Fmt, value), donde Fmt es

  • "%d" si value es de tipo int

  • "%u" si value es de tipo unsigned int

  • "%ld" si value es de tipo long

  • "%lu" si value es de tipo unsigned long

  • "%lld" si value es de tipo long long

  • "%llu" si value es de tipo unsigned long long

  • "%f" si value es de tipo float o double

  • "%Lf" si value es de tipo long double

La función devuelve string(Buf).

to_wstring

Convierte un valor en una cadena de tipo ancho.

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);

Parámetros

value
El valor que se va a convertir.

Valor devuelto

Cadena de tipo ancho que representa el valor.

Comentarios

La función convierte value en una secuencia de elementos almacenados en un objeto de matriz Buf interno de la función como si se llamara a swprintf(Buf, Len, Fmt, value), donde Fmt es

  • L"%d" si value es de tipo int

  • L"%u" si value es de tipo unsigned int

  • L"%ld" si value es de tipo long

  • L"%lu" si value es de tipo unsigned long

  • L"%lld" si value es de tipo long long

  • L"%llu" si value es de tipo unsigned long long

  • L"%f" si value es de tipo float o double

  • L"%Lf" si value es de tipo long double

La función devuelve wstring(Buf).

Consulte también

<string>