<string>
– funkce
getline
stod
stof
stoi
stol
stold
stoll
stoul
stoull
swap
to_string
to_wstring
getline
Extrahujte řetězce ze vstupního datového proudu řádek po řádku.
// (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);
Parametry
in_stream
Vstupní datový proud, ze kterého se má řetězec extrahovat.
str
Řetězec, do kterého se čtou znaky ze vstupního datového proudu.
delimiter
Oddělovač řádků.
Návratová hodnota
Vstupní datový proud in_stream
.
Poznámky
Dvojice podpisů funkcí označených (1)
jako extrahování znaků, in_stream
dokud delimiter
se nenajdou, a uloží je do str
.
Dvojice podpisů funkcí označených (2)
jako výchozí oddělovač řádků používá nový řádek a chová se jako getline(in_stream, str, in_stream. widen('\n'))
.
Druhá funkce každé dvojice je analogická k první funkci, která podporuje rvalue
odkazy.
Extrakce se zastaví, když dojde k některé z následujících situací:
Na konci souboru, v takovém případě je příznak
in_stream
interního stavu nastaven naios_base::eofbit
.Za funkcí extrahuje prvek, který porovnává rovnající
delimiter
se . Prvek se nevloží zpět ani nepřidá k řízené sekvenci.Za funkcí extrahuje
str.max_size
prvky. Příznak interníhoin_stream
stavu je nastaven naios_base::failbit
hodnotu .Jiná jiná chyba než dříve uvedená; příznak interního
in_stream
stavu je nastaven naios_base::badbit
hodnotu .
Informace o příznakech interního stavu naleznete v tématu ios_base::iostate
.
Pokud funkce extrahuje žádné prvky, je příznak interního in_stream
stavu nastaven na ios_base::failbit
hodnotu . V každém případě vrátí getline
.in_stream
Pokud je vyvolán in_stream
výjimka a str
jsou ponechány v platném stavu.
Příklad
Následující kód ukazuje getline()
ve dvou režimech: první s výchozím oddělovačem (nový řádek) a druhý s prázdným znakem jako oddělovačem. Znak koncového souboru (CTRL-Z na klávesnici) slouží k řízení ukončení smyčky while. Tato hodnota nastaví příznak interního cin
eofbit
stavu , který musí být vymazán s basic_ios::clear()
před druhou smyčkou while bude správně fungovat.
// 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
Převede sekvenci znaků na znak .double
double stod(
const string& str,
size_t* idx = 0);
double stod(
const wstring& str,
size_t* idx = 0
;
Parametry
str
Sekvence znaků, která se má převést.
idx
Hodnota indexu prvního nekonvertovaného znaku.
Návratová hodnota
Hodnota double
.
Poznámky
Funkce převede sekvenci prvků na str
hodnotu typu double
, jako by volání strtod( str.c_str(), _Eptr)
, kde _Eptr
je objekt interní pro funkci. Pokud str.c_str() == *_Eptr
, vyvolá objekt typu invalid_argument
. Pokud by takové volání bylo nastaveno errno
, vyvolá objekt typu out_of_range
. Jinak pokud idx
není ukazatel null, funkce se uloží *_Eptr - str.c_str()
*idx
a vrátí hodnotu.
stof
Převede sekvenci znaků na plovoucí.
float stof(
const string& str,
size_t* idx = 0);
float stof(
const wstring& str,
size_t* idx = 0);
Parametry
str
Sekvence znaků, která se má převést.
idx
Hodnota indexu prvního nekonvertovaného znaku.
Návratová hodnota
Hodnota float
.
Poznámky
Funkce převede sekvenci prvků na str
hodnotu typu float
, jako by volání strtof( str.c_str(), _Eptr)
, kde _Eptr
je objekt interní pro funkci. Pokud str.c_str() == *_Eptr
, vyvolá objekt typu invalid_argument
. Pokud by takové volání bylo nastaveno errno
, vyvolá objekt typu out_of_range
. Jinak pokud idx
není ukazatel null, funkce se uloží *_Eptr - str.c_str()
*idx
a vrátí hodnotu.
stoi
Převede posloupnost znaků na celé číslo.
int stoi(
const string& str,
size_t* idx = 0,
int base = 10);
int stoi(
const wstring& str,
size_t* idx = 0,
int base = 10);
Návratová hodnota
Celočíselná hodnota.
Parametry
str
Sekvence znaků, která se má převést.
idx
Hodnota indexu prvního nekonvertovaného znaku.
base
Číselný základ, který se má použít.
Poznámky
Funkce stoi
převede posloupnost znaků v str na hodnotu typu int
a vrátí hodnotu. Například při předání sekvence znaků "10" je hodnota vrácená stoi
celé číslo 10.
stoi
chová se podobně jako funkce strtol
pro jednobajtů znaky, když je volána způsobem strtol( str.c_str(), _Eptr, idx)
, kde _Eptr
je objekt interní pro funkci; nebo wcstol
pro široké znaky, když je volána podobným způsobem, wcstol(Str.c_str(), _Eptr, idx)
. Další informace naleznete v tématu strtol
, wcstol
, _strtol_l
, _wcstol_l
.
Pokud str.c_str() == *_Eptr
, stoi
vyvolá objekt typu invalid_argument
. Pokud by takové volání bylo nastaveno errno
nebo pokud vrácená hodnota nemůže být reprezentována jako objekt typu int
, vyvolá objekt typu out_of_range
. V opačném případě, pokud idx není nulový ukazatel, funkce se uloží *_Eptr - str.c_str()
do *idx
.
stol
Převede sekvenci znaků na znak .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);
Parametry
str
Sekvence znaků, která se má převést.
idx
Hodnota indexu prvního nekonvertovaného znaku.
base
Číselný základ, který se má použít.
Návratová hodnota
Hodnota dlouhého celého čísla.
Poznámky
Funkce převede sekvenci prvků v str na hodnotu typu long
, jako by volání strtol( str.c_str(), _Eptr, idx)
, kde _Eptr
je objekt interní pro funkci. Pokud str.c_str() == *_Eptr
, vyvolá objekt typu invalid_argument
. Pokud by takové volání bylo nastaveno errno
, vyvolá objekt typu out_of_range
. Jinak pokud idx
není ukazatel null, funkce se uloží *_Eptr - str.c_str()
*idx
a vrátí hodnotu.
stold
Převede sekvenci znaků na znak .long double
double stold(
const string& str,
size_t* idx = 0);
double stold(
const wstring& str,
size_t* idx = 0);
Parametry
str
Sekvence znaků, která se má převést.
idx
Hodnota indexu prvního nekonvertovaného znaku.
Návratová hodnota
Hodnota long double
.
Poznámky
Funkce převede sekvenci prvků v str na hodnotu typu long double
, jako by volání strtold( str.c_str(), _Eptr)
, kde _Eptr
je objekt interní pro funkci. Pokud str.c_str() == *_Eptr
, vyvolá objekt typu invalid_argument
. Pokud by takové volání bylo nastaveno errno
, vyvolá objekt typu out_of_range
. Jinak pokud idx
není ukazatel null, funkce se uloží *_Eptr - str.c_str()
*idx
a vrátí hodnotu.
stoll
Převede sekvenci znaků na znak .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);
Parametry
str
Sekvence znaků, která se má převést.
idx
Hodnota indexu prvního nekonvertovaného znaku.
base
Číselný základ, který se má použít.
Návratová hodnota
Hodnota long long
.
Poznámky
Funkce převede sekvenci prvků v str na hodnotu typu long long
, jako by volání strtoll( str.c_str(), _Eptr, idx)
, kde _Eptr
je objekt interní pro funkci. Pokud str.c_str() == *_Eptr
, vyvolá objekt typu invalid_argument
. Pokud by takové volání bylo nastaveno errno
, vyvolá objekt typu out_of_range
. Jinak pokud idx není ukazatel null, funkce se uloží *_Eptr - str.c_str()
*idx
a vrátí hodnotu.
stoul
Převede posloupnost znaků na dlouhou nepodepsanou.
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);
Parametry
str
Sekvence znaků, která se má převést.
idx
Hodnota indexu prvního nekonvertovaného znaku.
base
Číselný základ, který se má použít.
Návratová hodnota
Celočíselná hodnota bez znaménka.
Poznámky
Funkce převede sekvenci prvků v str na hodnotu typu unsigned long
, jako by volání strtoul( str.c_str(), _Eptr, idx)
, kde _Eptr
je objekt interní pro funkci. Pokud str.c_str() == *_Eptr
, vyvolá objekt typu invalid_argument
. Pokud by takové volání bylo nastaveno errno
, vyvolá objekt typu out_of_range
. Jinak pokud idx není ukazatel null, funkce se uloží *_Eptr - str.c_str()
*idx
a vrátí hodnotu.
stoull
Převede sekvenci znaků na znak .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);
Parametry
str
Sekvence znaků, která se má převést.
idx
Hodnota indexu prvního nekonvertovaného znaku.
base
Číselný základ, který se má použít.
Návratová hodnota
Hodnota unsigned long long
.
Poznámky
Funkce převede sekvenci prvků v str na hodnotu typu unsigned long long
, jako by volání strtoull( str.c_str(), _Eptr, idx)
, kde _Eptr
je objekt interní pro funkci. Pokud str.c_str() == *_Eptr
, vyvolá objekt typu invalid_argument
. Pokud by takové volání bylo nastaveno errno
, vyvolá objekt typu out_of_range
. Jinak pokud idx
není ukazatel null, funkce se uloží *_Eptr - str.c_str()
*idx
a vrátí hodnotu.
swap
Vymění pole znaků dvou řetězců.
template <class Traits, class Allocator>
void swap(basic_string<CharType, Traits, Allocator>& left, basic_string<CharType, Traits, Allocator>& right);
Parametry
left
Jeden řetězec, jehož prvky mají být prohozeny s prvky jiného řetězce.
right
Druhý řetězec, jehož prvky mají být prohozeny prvním řetězcem.
Poznámky
Funkce šablony provede specializovanou členovou funkci left.swap
(right
) pro řetězce, což zaručuje konstantní složitost.
Příklad
// 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
Převede hodnotu na hodnotu 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);
Parametry
value
Hodnota, která má být převedena.
Návratová hodnota
Představuje string
hodnotu.
Poznámky
Funkce převede hodnotu na sekvenci prvků uložených v objektu Buf
pole interní na funkci, jako by voláním sprintf(Buf, Fmt, value)
, kde Fmt
je
"%d"
pokudvalue
je typuint
"%u"
pokudvalue
je typuunsigned int
"%ld"
pokudvalue
je typulong
"%lu"
pokudvalue
je typuunsigned long
"%lld"
pokudvalue
je typulong long
"%llu"
pokudvalue
je typuunsigned long long
"%f"
pokudvalue
je typufloat
nebodouble
"%Lf"
pokudvalue
je typulong double
Funkce vrátí string(Buf)
.
to_wstring
Převede hodnotu na široký řetězec.
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);
Parametry
value
Hodnota, která má být převedena.
Návratová hodnota
Široký řetězec, který představuje hodnotu.
Poznámky
Funkce se převede value
na sekvenci prvků uložených v objektu Buf
pole uvnitř funkce, jako by voláním swprintf(Buf, Len, Fmt, value)
, kde Fmt
je
L"%d"
pokudvalue
je typuint
L"%u"
pokudvalue
je typuunsigned int
L"%ld"
pokudvalue
je typulong
L"%lu"
pokudvalue
je typuunsigned long
L"%lld"
pokudvalue
je typulong long
L"%llu"
pokudvalue
je typuunsigned long long
L"%f"
pokudvalue
je typufloat
nebodouble
L"%Lf"
pokudvalue
je typulong double
Funkce vrátí wstring(Buf)
.