Udostępnij za pośrednictwem


<string>, funkcje

getline
stod
stof
stoi
stol
stold
stoll
stoul
stoull
swap
to_string
to_wstring

getline

Wyodrębnij ciągi ze strumienia wejściowego line-by-line.

// (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
Strumień wejściowy, z którego ma zostać wyodrębniony ciąg.

str
Ciąg, do którego są odczytywane znaki ze strumienia wejściowego.

delimiter
Ogranicznik linii.

Wartość zwracana

Strumień in_streamwejściowy .

Uwagi

Para podpisów funkcji oznaczonych (1) znakami wyodrębniania znaków do in_stream delimiter momentu znalezienia, przechowując je w pliku str.

Para podpisów funkcji oznaczonych (2) jako nowy wiersz jako domyślny ogranicznik wiersza i zachowuje się jako getline(in_stream, str, in_stream. widen('\n')).

Druga funkcja każdej pary jest analogią do pierwszej do obsługi rvalue odwołań.

Wyodrębnianie zatrzymuje się, gdy wystąpi jeden z następujących:

  • Na końcu pliku, w którym przypadku flaga stanu wewnętrznego jest ustawiona in_stream na ios_base::eofbit.

  • Po wyodrębnieniu przez funkcję elementu, który porównuje element równy delimiter. Element nie zostanie przywrócony ani dołączony do kontrolowanej sekwencji.

  • Po wyodrębnieniu elementów przez funkcję str.max_size . Flaga stanu wewnętrznego jest ustawiona in_stream na ios_base::failbit.

  • Inny błąd niż wymienione wcześniej; flaga stanu wewnętrznego jest ustawiona in_stream na ios_base::badbit.

Aby uzyskać informacje o flagach stanu wewnętrznego, zobacz ios_base::iostate.

Jeśli funkcja nie wyodrębnia żadnych elementów, flaga stanu wewnętrznego jest ustawiona in_stream na ios_base::failbitwartość . W każdym przypadku getline funkcja zwraca wartość in_stream.

Jeśli wyjątek zostanie zgłoszony in_stream i str pozostanie w prawidłowym stanie.

Przykład

Poniższy kod pokazuje getline() w dwóch trybach: pierwszy z domyślnym ogranicznikiem (nowy wiersz) i drugim z odstępem jako ogranicznikiem. Znak końca pliku (CTRL-Z na klawiaturze) służy do sterowania kończeniem pętli while. Ta wartość ustawia wewnętrzną flagę stanu na cin eofbit, która musi zostać wyczyszczone basic_ios::clear() przed drugą pętlą while będzie działać prawidłowo.

// 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

Konwertuje sekwencję znaków na double.

double stod(
    const string& str,
    size_t* idx = 0);

double stod(
    const wstring& str,
    size_t* idx = 0
;

Parametry

str
Sekwencja znaków, która ma zostać przekonwertowana.

idx
Wartość indeksu pierwszego niekonwertowanego znaku.

Wartość zwracana

Wartość wyliczenia double.

Uwagi

Funkcja konwertuje sekwencję elementów w str obiekcie na wartość typu double tak, jakby wywołuje strtod( str.c_str(), _Eptr)metodę , gdzie _Eptr jest obiektem wewnętrznym funkcji. Jeśli str.c_str() == *_Eptrparametr zgłasza obiekt typu invalid_argument. Jeśli takie wywołanie ustawi errnowartość , zgłasza obiekt typu out_of_range. W przeciwnym razie, jeśli idx nie jest wskaźnikiem o wartości null, funkcja przechowuje *_Eptr - str.c_str() wartość *idx i zwraca wartość.

stof

Konwertuje sekwencję znaków na zmiennoprzecinkowy.

float stof(
    const string& str,
    size_t* idx = 0);

float stof(
    const wstring& str,
    size_t* idx = 0);

Parametry

str
Sekwencja znaków, która ma zostać przekonwertowana.

idx
Wartość indeksu pierwszego niekonwertowanego znaku.

Wartość zwracana

Wartość wyliczenia float.

Uwagi

Funkcja konwertuje sekwencję elementów w str obiekcie na wartość typu float tak, jakby wywołuje strtof( str.c_str(), _Eptr)metodę , gdzie _Eptr jest obiektem wewnętrznym funkcji. Jeśli str.c_str() == *_Eptrparametr zgłasza obiekt typu invalid_argument. Jeśli takie wywołanie ustawi errnowartość , zgłasza obiekt typu out_of_range. W przeciwnym razie, jeśli idx nie jest wskaźnikiem o wartości null, funkcja przechowuje *_Eptr - str.c_str() wartość *idx i zwraca wartość.

stoi

Konwertuje sekwencję znaków na liczbę całkowitą.

int stoi(
    const string& str,
    size_t* idx = 0,
    int base = 10);

int stoi(
    const wstring& str,
    size_t* idx = 0,
    int base = 10);

Wartość zwracana

Wartość całkowita.

Parametry

str
Sekwencja znaków, która ma zostać przekonwertowana.

idx
Wartość indeksu pierwszego niekonwertowanego znaku.

base
Podstawa liczb do użycia.

Uwagi

Funkcja stoi konwertuje sekwencję znaków w ciągu na wartość typu int i zwraca wartość. Na przykład po przekazaniu sekwencji znaków "10" wartość zwracana przez stoi jest liczbą całkowitą 10.

stoi zachowuje się podobnie do funkcji strtol dla znaków jednobajtowych, gdy jest wywoływany w sposób strtol( str.c_str(), _Eptr, idx), gdzie _Eptr jest obiektem wewnętrznym funkcji; lub wcstol dla znaków szerokich, gdy jest wywoływany w podobny sposób, wcstol(Str.c_str(), _Eptr, idx). Aby uzyskać więcej informacji, zobacz , , _strtol_lwcstol, _wcstol_l.strtol

Jeśli str.c_str() == *_Eptrobiekt stoi typu , zgłasza obiekt invalid_argumenttypu . Jeśli takie wywołanie ustawi errnowartość , lub jeśli zwrócona wartość nie może być reprezentowana jako obiekt typu int, zgłasza obiekt typu out_of_range. W przeciwnym razie, jeśli idx nie jest wskaźnikiem o wartości null, funkcja przechowuje *_Eptr - str.c_str() w pliku *idx.

stol

Konwertuje sekwencję znaków na 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
Sekwencja znaków, która ma zostać przekonwertowana.

idx
Wartość indeksu pierwszego niekonwertowanego znaku.

base
Podstawa liczb do użycia.

Wartość zwracana

Wartość long-integer.

Uwagi

Funkcja konwertuje sekwencję elementów w ciągu na wartość typu long tak, jakby wywołała strtol( str.c_str(), _Eptr, idx)metodę , gdzie _Eptr jest obiektem wewnętrznym funkcji. Jeśli str.c_str() == *_Eptrparametr zgłasza obiekt typu invalid_argument. Jeśli takie wywołanie ustawi errnowartość , zgłasza obiekt typu out_of_range. W przeciwnym razie, jeśli idx nie jest wskaźnikiem o wartości null, funkcja przechowuje *_Eptr - str.c_str() wartość *idx i zwraca wartość.

stold

Konwertuje sekwencję znaków na long double.

double stold(
    const string& str,
    size_t* idx = 0);

double stold(
    const wstring& str,
    size_t* idx = 0);

Parametry

str
Sekwencja znaków, która ma zostać przekonwertowana.

idx
Wartość indeksu pierwszego niekonwertowanego znaku.

Wartość zwracana

Wartość wyliczenia long double.

Uwagi

Funkcja konwertuje sekwencję elementów w ciągu na wartość typu long double tak, jakby wywołała strtold( str.c_str(), _Eptr)metodę , gdzie _Eptr jest obiektem wewnętrznym funkcji. Jeśli str.c_str() == *_Eptrparametr zgłasza obiekt typu invalid_argument. Jeśli takie wywołanie ustawi errnowartość , zgłasza obiekt typu out_of_range. W przeciwnym razie, jeśli idx nie jest wskaźnikiem o wartości null, funkcja przechowuje *_Eptr - str.c_str() wartość *idx i zwraca wartość.

stoll

Konwertuje sekwencję znaków na 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
Sekwencja znaków, która ma zostać przekonwertowana.

idx
Wartość indeksu pierwszego niekonwertowanego znaku.

base
Podstawa liczb do użycia.

Wartość zwracana

Wartość wyliczenia long long.

Uwagi

Funkcja konwertuje sekwencję elementów w ciągu na wartość typu long long tak, jakby wywołała strtoll( str.c_str(), _Eptr, idx)metodę , gdzie _Eptr jest obiektem wewnętrznym funkcji. Jeśli str.c_str() == *_Eptrparametr zgłasza obiekt typu invalid_argument. Jeśli takie wywołanie ustawi errnowartość , zgłasza obiekt typu out_of_range. W przeciwnym razie, jeśli identyfikator idx nie jest wskaźnikiem o wartości null, funkcja przechowuje *_Eptr - str.c_str() wartość *idx i zwraca wartość.

stoul

Konwertuje sekwencję znaków na niepodpisaną długość.

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
Sekwencja znaków, która ma zostać przekonwertowana.

idx
Wartość indeksu pierwszego niekonwertowanego znaku.

base
Podstawa liczb do użycia.

Wartość zwracana

Wartość niepodpisanej długiej liczby całkowitej.

Uwagi

Funkcja konwertuje sekwencję elementów w ciągu na wartość typu unsigned long tak, jakby wywołała strtoul( str.c_str(), _Eptr, idx)metodę , gdzie _Eptr jest obiektem wewnętrznym funkcji. Jeśli str.c_str() == *_Eptrparametr zgłasza obiekt typu invalid_argument. Jeśli takie wywołanie ustawi errnowartość , zgłasza obiekt typu out_of_range. W przeciwnym razie, jeśli identyfikator idx nie jest wskaźnikiem o wartości null, funkcja przechowuje *_Eptr - str.c_str() wartość *idx i zwraca wartość.

stoull

Konwertuje sekwencję znaków na .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
Sekwencja znaków, która ma zostać przekonwertowana.

idx
Wartość indeksu pierwszego niekonwertowanego znaku.

base
Podstawa liczb do użycia.

Wartość zwracana

Wartość wyliczenia unsigned long long.

Uwagi

Funkcja konwertuje sekwencję elementów w ciągu na wartość typu unsigned long long tak, jakby wywołała strtoull( str.c_str(), _Eptr, idx)metodę , gdzie _Eptr jest obiektem wewnętrznym funkcji. Jeśli str.c_str() == *_Eptrparametr zgłasza obiekt typu invalid_argument. Jeśli takie wywołanie ustawi errnowartość , zgłasza obiekt typu out_of_range. W przeciwnym razie, jeśli idx nie jest wskaźnikiem o wartości null, funkcja przechowuje *_Eptr - str.c_str() wartość *idx i zwraca wartość.

swap

Wymienia tablice znaków dwóch ciągów.

template <class Traits, class Allocator>
void swap(basic_string<CharType, Traits, Allocator>& left, basic_string<CharType, Traits, Allocator>& right);

Parametry

left
Jeden ciąg, którego elementy mają zostać zamienione na elementy innego ciągu.

right
Drugi ciąg, którego elementy mają zostać zamienione na pierwszy ciąg.

Uwagi

Funkcja szablonu wykonuje wyspecjalizowaną funkcję left.swapskładową (right) dla ciągów, która gwarantuje stałą złożoność.

Przykład

// 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

Konwertuje wartość na .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
Wartość do konwersji.

Wartość zwracana

Wartość string reprezentująca wartość .

Uwagi

Funkcja konwertuje wartość na sekwencję elementów przechowywanych w obiekcie Buf tablicy wewnętrznej do funkcji, tak jak w przypadku wywoływania sprintf(Buf, Fmt, value)metody , gdzie Fmt jest

  • "%d" jeśli value jest typu int

  • "%u" jeśli value jest typu unsigned int

  • "%ld" jeśli value jest typu long

  • "%lu" jeśli value jest typu unsigned long

  • "%lld" jeśli value jest typu long long

  • "%llu" jeśli value jest typu unsigned long long

  • "%f" jeśli value jest typu float lub double

  • "%Lf" jeśli value jest typu long double

Funkcja zwraca string(Buf)wartość .

to_wstring

Konwertuje wartość na ciąg znaków dwubajtowych.

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
Wartość do konwersji.

Wartość zwracana

Ciąg dwubajtowy, który reprezentuje wartość.

Uwagi

Funkcja konwertuje value na sekwencję elementów przechowywanych w obiekcie Buf tablicy wewnętrznej do funkcji tak, jakby wywołuje swprintf(Buf, Len, Fmt, value)metodę , gdzie Fmt jest

  • L"%d" jeśli value jest typu int

  • L"%u" jeśli value jest typu unsigned int

  • L"%ld" jeśli value jest typu long

  • L"%lu" jeśli value jest typu unsigned long

  • L"%lld" jeśli value jest typu long long

  • L"%llu" jeśli value jest typu unsigned long long

  • L"%f" jeśli value jest typu float lub double

  • L"%Lf" jeśli value jest typu long double

Funkcja zwraca wstring(Buf)wartość .

Zobacz też

<string>