Dela via


<string> funktioner

Rubriken <string> innehåller följande funktioner:

getline

Extrahera strängar från indataströmmen rad för rad.

// (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);

Parameterar

in_stream
Den indataström som en sträng ska extraheras från.

str
Strängen som läse tecknen från indataströmmen.

delimiter
Linje avgränsare.

Returvärde

Indataströmmen in_stream.

Anmärkningar

Det par med funktionssignaturer som markerats (1) extrahera tecken från in_stream tills de hittas delimiter och lagrar dem i str.

Det par med funktionssignaturer som markerats (2) använder newline som standardlinjegränsare och beter sig som getline(in_stream, str, in_stream. widen('\n')).

Den andra funktionen för varje par är en analog till den första som stöder rvalue referenser.

Extrahering stoppas när något av följande inträffar:

  • I slutet av filen, i vilket fall den interna tillståndsflaggan in_stream för är inställd på ios_base::eofbit.

  • När funktionen extraherar ett element som jämförs med delimiter. Elementet läggs inte tillbaka eller läggs till i den kontrollerade sekvensen.

  • När funktionen har extraherat str.max_size element. Den interna tillståndsflaggan in_stream för är inställd på ios_base::failbit.

  • Andra fel än de som tidigare angavs. den interna tillståndsflaggan in_stream för är inställd på ios_base::badbit.

Information om interna tillståndsflaggor finns i ios_base::iostate.

Om funktionen inte extraherar några element är den interna tillståndsflaggan in_stream inställd på ios_base::failbit. I vilket fall getline som helst returnerar in_stream.

Om ett undantag utlöses in_stream och str lämnas i ett giltigt tillstånd.

Exempel

Följande kod visas getline() i två lägen: först med standardgränsaren (ny rad) och den andra med ett blanksteg som avgränsare. Filsluttecknet (CTRL-Z på tangentbordet) används för att styra avslutningen av while-looparna. Det här värdet anger den interna tillståndsflaggan cin för till eofbit, som måste rensas med basic_ios::clear() före den andra medan-loopen fungerar korrekt.

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

Konverterar en teckensekvens till en double.

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

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

Parameterar

str
Teckensekvensen som ska konverteras.

idx
Indexvärdet för det första okonverterade tecknet.

Returvärde

Värdet double.

Anmärkningar

Funktionen konverterar sekvensen av element till str ett värde av typen double som genom att anropa strtod( str.c_str(), _Eptr), där _Eptr är ett objekt som är internt för funktionen. Om str.c_str() == *_Eptrgenererar det ett objekt av typen invalid_argument. Om ett sådant anrop skulle ställas in errnogenererar det ett objekt av typen out_of_range. Annars, om idx inte är en nullpekare, lagrar *_Eptr - str.c_str() funktionen i *idx och returnerar värdet.

stof

Konverterar en teckensekvens till en flyttal.

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

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

Parameterar

str
Teckensekvensen som ska konverteras.

idx
Indexvärdet för det första okonverterade tecknet.

Returvärde

Värdet float.

Anmärkningar

Funktionen konverterar sekvensen av element till str ett värde av typen float som genom att anropa strtof( str.c_str(), _Eptr), där _Eptr är ett objekt som är internt för funktionen. Om str.c_str() == *_Eptrgenererar det ett objekt av typen invalid_argument. Om ett sådant anrop skulle ställas in errnogenererar det ett objekt av typen out_of_range. Annars, om idx inte är en nullpekare, lagrar *_Eptr - str.c_str() funktionen i *idx och returnerar värdet.

stoi

Konverterar en teckensekvens till ett heltal.

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

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

Returvärde

Heltalsvärdet.

Parameterar

str
Teckensekvensen som ska konverteras.

idx
Indexvärdet för det första okonverterade tecknet.

base
Den talbas som ska användas.

Anmärkningar

Funktionen stoi konverterar teckensekvensen i str till ett värde av typen int och returnerar värdet. När det till exempel skickas en teckensekvens "10" är det värde som returneras av stoi heltal 10.

stoi fungerar på samma sätt som funktionen strtol för en byte-tecken när den anropas på det sätt strtol( str.c_str(), _Eptr, idx), där _Eptr är ett objekt som är internt för funktionen, eller wcstol för breda tecken, när det anropas på liknande sätt, wcstol(Str.c_str(), _Eptr, idx). Mer information finns i strtol, wcstol, _strtol_l, _wcstol_l.

Om str.c_str() == *_Eptr, stoi genererar ett objekt av typen invalid_argument. Om ett sådant anrop skulle ange errno, eller om det returnerade värdet inte kan representeras som ett objekt av typen int, genererar det ett objekt av typen out_of_range. Om idx inte är en null-pekare lagras *_Eptr - str.c_str() annars funktionen i *idx.

stol

Konverterar en teckensekvens till en 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);

Parameterar

str
Teckensekvensen som ska konverteras.

idx
Indexvärdet för det första okonverterade tecknet.

base
Den talbas som ska användas.

Returvärde

Det långa heltalsvärdet.

Anmärkningar

Funktionen konverterar sekvensen av element i str till ett värde av typen long som genom att anropa strtol( str.c_str(), _Eptr, idx), där _Eptr är ett internt objekt för funktionen. Om str.c_str() == *_Eptrgenererar det ett objekt av typen invalid_argument. Om ett sådant anrop skulle ställas in errnogenererar det ett objekt av typen out_of_range. Annars, om idx inte är en nullpekare, lagrar *_Eptr - str.c_str() funktionen i *idx och returnerar värdet.

stold

Konverterar en teckensekvens till en long double.

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

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

Parameterar

str
Teckensekvensen som ska konverteras.

idx
Indexvärdet för det första okonverterade tecknet.

Returvärde

Värdet long double.

Anmärkningar

Funktionen konverterar sekvensen av element i str till ett värde av typen long double som genom att anropa strtold( str.c_str(), _Eptr), där _Eptr är ett internt objekt för funktionen. Om str.c_str() == *_Eptrgenererar det ett objekt av typen invalid_argument. Om ett sådant anrop skulle ställas in errnogenererar det ett objekt av typen out_of_range. Annars, om idx inte är en nullpekare, lagrar *_Eptr - str.c_str() funktionen i *idx och returnerar värdet.

stoll

Konverterar en teckensekvens till en 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);

Parameterar

str
Teckensekvensen som ska konverteras.

idx
Indexvärdet för det första okonverterade tecknet.

base
Den talbas som ska användas.

Returvärde

Värdet long long.

Anmärkningar

Funktionen konverterar sekvensen av element i str till ett värde av typen long long som genom att anropa strtoll( str.c_str(), _Eptr, idx), där _Eptr är ett internt objekt för funktionen. Om str.c_str() == *_Eptrgenererar det ett objekt av typen invalid_argument. Om ett sådant anrop skulle ställas in errnogenererar det ett objekt av typen out_of_range. Annars, om idx inte är en null-pekare, lagrar *_Eptr - str.c_str() funktionen i *idx och returnerar värdet.

stoul

Konverterar en teckensekvens till en osignerad lång.

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);

Parameterar

str
Teckensekvensen som ska konverteras.

idx
Indexvärdet för det första okonverterade tecknet.

base
Den talbas som ska användas.

Returvärde

Det osignerade lång heltalsvärdet.

Anmärkningar

Funktionen konverterar sekvensen av element i str till ett värde av typen unsigned long som genom att anropa strtoul( str.c_str(), _Eptr, idx), där _Eptr är ett internt objekt för funktionen. Om str.c_str() == *_Eptrgenererar det ett objekt av typen invalid_argument. Om ett sådant anrop skulle ställas in errnogenererar det ett objekt av typen out_of_range. Annars, om idx inte är en null-pekare, lagrar *_Eptr - str.c_str() funktionen i *idx och returnerar värdet.

stoull

Konverterar en teckensekvens till en 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);

Parameterar

str
Teckensekvensen som ska konverteras.

idx
Indexvärdet för det första okonverterade tecknet.

base
Den talbas som ska användas.

Returvärde

Värdet unsigned long long.

Anmärkningar

Funktionen konverterar sekvensen av element i str till ett värde av typen unsigned long long som genom att anropa strtoull( str.c_str(), _Eptr, idx), där _Eptr är ett internt objekt för funktionen. Om str.c_str() == *_Eptrgenererar det ett objekt av typen invalid_argument. Om ett sådant anrop skulle ställas in errnogenererar det ett objekt av typen out_of_range. Annars, om idx inte är en nullpekare, lagrar *_Eptr - str.c_str() funktionen i *idx och returnerar värdet.

swap

Utbyter matriserna med tecken i två strängar.

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

Parameterar

left
En sträng vars element ska växlas med elementen i en annan sträng.

right
Den andra strängen vars element ska växlas med den första strängen.

Anmärkningar

Mallfunktionen kör den specialiserade medlemsfunktionen left.swap(right) för strängar, vilket garanterar konstant komplexitet.

Exempel

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

Konverterar ett värde till en 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);

Parameterar

value
Värdet som ska konverteras.

Returvärde

Det string som representerar värdet.

Anmärkningar

Funktionen konverterar värdet till en sekvens med element som lagras i ett matrisobjekt Buf som är internt för funktionen som om genom att anropa sprintf(Buf, Fmt, value), där Fmt är

  • "%d" om value är av typen int

  • "%u" om value är av typen unsigned int

  • "%ld" om value är av typen long

  • "%lu" om value är av typen unsigned long

  • "%lld" om value är av typen long long

  • "%llu" om value är av typen unsigned long long

  • "%f" om value är av typen float eller double

  • "%Lf" om value är av typen long double

Funktionen returnerar string(Buf).

to_wstring

Konverterar ett värde till en bred sträng.

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);

Parameterar

value
Värdet som ska konverteras.

Returvärde

Den breda sträng som representerar värdet.

Anmärkningar

Funktionen konverterar value till en sekvens med element som lagras i ett matrisobjekt Buf som är internt i funktionen som om genom att anropa swprintf(Buf, Len, Fmt, value), där Fmt är

  • L"%d" om value är av typen int

  • L"%u" om value är av typen unsigned int

  • L"%ld" om value är av typen long

  • L"%lu" om value är av typen unsigned long

  • L"%lld" om value är av typen long long

  • L"%llu" om value är av typen unsigned long long

  • L"%f" om value är av typen float eller double

  • L"%Lf" om value är av typen long double

Funktionen returnerar wstring(Buf).

Se även

<string>