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 enios_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 dein_stream
se establece enios_base::failbit
.Otros errores distintos de los que mencionamos; la marca de estado interno de
in_stream
se establece enios_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"
sivalue
es de tipoint
"%u"
sivalue
es de tipounsigned int
"%ld"
sivalue
es de tipolong
"%lu"
sivalue
es de tipounsigned long
"%lld"
sivalue
es de tipolong long
"%llu"
sivalue
es de tipounsigned long long
"%f"
sivalue
es de tipofloat
odouble
"%Lf"
sivalue
es de tipolong 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"
sivalue
es de tipoint
L"%u"
sivalue
es de tipounsigned int
L"%ld"
sivalue
es de tipolong
L"%lu"
sivalue
es de tipounsigned long
L"%lld"
sivalue
es de tipolong long
L"%llu"
sivalue
es de tipounsigned long long
L"%f"
sivalue
es de tipofloat
odouble
L"%Lf"
sivalue
es de tipolong double
La función devuelve wstring(Buf)
.