Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Hlavička <string> obsahuje následující funkce:
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_streaminterního stavu nastaven naios_base::eofbit.Za funkcí extrahuje prvek, který porovnává rovnající
delimiterse . Prvek se nevloží zpět ani nepřidá k řízené sekvenci.Za funkcí extrahuje
str.max_sizeprvky. Příznak interníhoin_streamstavu je nastaven naios_base::failbithodnotu .Jiná jiná chyba než dříve uvedená; příznak interního
in_streamstavu je nastaven naios_base::badbithodnotu .
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::failbithodnotu . 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 cineofbitstavu , 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 errnonebo 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"pokudvalueje typuint"%u"pokudvalueje typuunsigned int"%ld"pokudvalueje typulong"%lu"pokudvalueje typuunsigned long"%lld"pokudvalueje typulong long"%llu"pokudvalueje typuunsigned long long"%f"pokudvalueje typufloatnebodouble"%Lf"pokudvalueje 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"pokudvalueje typuintL"%u"pokudvalueje typuunsigned intL"%ld"pokudvalueje typulongL"%lu"pokudvalueje typuunsigned longL"%lld"pokudvalueje typulong longL"%llu"pokudvalueje typuunsigned long longL"%f"pokudvalueje typufloatnebodoubleL"%Lf"pokudvalueje typulong double
Funkce vrátí wstring(Buf).