<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ů.

Vrácená 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 na ios_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_size prvky. Příznak interního in_stream stavu je nastaven na ios_base::failbithodnotu .

  • Jiná jiná chyba než dříve uvedená; příznak interního in_stream stavu je nastaven na ios_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.

Vrácená 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.

Vrácená 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);

Vrácená 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.

Vrácená 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.

Vrácená 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.

Vrácená 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.

Vrácená 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.

Vrácená 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.

Vrácená 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" pokud value je typu int

  • "%u" pokud value je typu unsigned int

  • "%ld" pokud value je typu long

  • "%lu" pokud value je typu unsigned long

  • "%lld" pokud value je typu long long

  • "%llu" pokud value je typu unsigned long long

  • "%f" pokud value je typu float nebo double

  • "%Lf" pokud value je typu long 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.

Vrácená 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" pokud value je typu int

  • L"%u" pokud value je typu unsigned int

  • L"%ld" pokud value je typu long

  • L"%lu" pokud value je typu unsigned long

  • L"%lld" pokud value je typu long long

  • L"%llu" pokud value je typu unsigned long long

  • L"%f" pokud value je typu float nebo double

  • L"%Lf" pokud value je typu long double

Funkce vrátí wstring(Buf).

Viz také

<string>