<string>
– funkce
getline
stod
stof
stoi
stol
stold
stoll
stoul
stoull
swap
to_string
to_wstring
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);
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ů.
Vstupní datový proud in_stream
.
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.
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;
}
}
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
;
str
Sekvence znaků, která se má převést.
idx
Hodnota indexu prvního nekonvertovaného znaku.
Hodnota double
.
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.
Převede sekvenci znaků na plovoucí.
float stof(
const string& str,
size_t* idx = 0);
float stof(
const wstring& str,
size_t* idx = 0);
str
Sekvence znaků, která se má převést.
idx
Hodnota indexu prvního nekonvertovaného znaku.
Hodnota float
.
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.
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);
Celočíselná hodnota.
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.
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
.
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);
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.
Hodnota dlouhého celého čísla.
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.
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);
str
Sekvence znaků, která se má převést.
idx
Hodnota indexu prvního nekonvertovaného znaku.
Hodnota long double
.
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.
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);
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.
Hodnota long long
.
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.
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);
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.
Celočíselná hodnota bez znaménka.
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.
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);
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.
Hodnota unsigned long long
.
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.
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);
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.
Funkce šablony provede specializovanou členovou funkci left.swap
(right
) pro řetězce, což zaručuje konstantní složitost.
// 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.
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);
value
Hodnota, která má být převedena.
Představuje string
hodnotu.
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)
.
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);
value
Hodnota, která má být převedena.
Široký řetězec, který představuje hodnotu.
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)
.