Delen via


<string> functies

De <string> header biedt de volgende functies:

getline

Extraheer tekenreeksen uit de invoerstroom 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);

Parameterwaarden

in_stream
De invoerstroom waaruit een tekenreeks moet worden geëxtraheerd.

str
De tekenreeks waarin de tekens uit de invoerstroom worden gelezen.

delimiter
Het scheidingsteken voor regels.

Retourwaarde

De invoerstroom in_stream.

Opmerkingen

Het paar functiehandtekeningen die zijn gemarkeerd als (1) tekens extraheren van in_stream totdat delimiter ze worden gevonden, worden opgeslagen in str.

De twee functiehandtekeningen die zijn gemarkeerd (2) , gebruiken newline als het standaardregelscheidingsteken en gedragen zich als getline(in_stream, str, in_stream. widen('\n')).

De tweede functie van elk paar is een analoog aan de eerste die verwijzingen ondersteuntrvalue.

Extractie stopt wanneer een van de volgende situaties plaatsvindt:

  • Aan het einde van het bestand, in welk geval de interne statusvlag is in_stream ingesteld op ios_base::eofbit.

  • Nadat de functie een element heeft geëxtraheerd dat gelijk is aan delimiter. Het element wordt niet teruggezet of toegevoegd aan de gecontroleerde reeks.

  • Nadat de functie elementen heeft geëxtraheerd str.max_size . De interne statusvlag is in_stream ingesteld op ios_base::failbit.

  • Een andere fout dan de eerder vermelde fouten; de interne statusvlag is in_stream ingesteld op ios_base::badbit.

Zie voor meer informatie over interne statusvlagmen ios_base::iostate.

Als de functie geen elementen extraheert, wordt de interne statusvlag in_stream ingesteld op ios_base::failbit. Retourneert in getlineelk geval in_stream .

Als er een uitzondering wordt gegenereerd in_stream en str deze een geldige status heeft.

Voorbeeld

De volgende code demonstreert getline() in twee modi: eerst met het standaardscheidingsteken (newline) en het tweede met een witruimte als scheidingsteken. Het einde van het bestand (CTRL-Z op het toetsenbord) wordt gebruikt om de beëindiging van de while-lussen te beheren. Met deze waarde wordt de interne statusvlag ingesteld op cineofbit, waarmee moet worden gewist basic_ios::clear() voordat de tweede lus goed werkt.

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

Converteert een tekenreeks naar een double.

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

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

Parameterwaarden

str
De tekenreeks die moet worden geconverteerd.

idx
De indexwaarde van het eerste niet-omgedraaide teken.

Retourwaarde

De double-waarde.

Opmerkingen

De functie converteert de reeks elementen naar str een waarde van het type double alsof door aan te roepen strtod( str.c_str(), _Eptr), waarbij _Eptr een object intern is voor de functie. Als str.c_str() == *_Eptr, het genereert een object van het type invalid_argument. Als een dergelijke aanroep zou worden ingesteld errno, wordt er een object van het type out_of_rangegegenereerd. idx Als dit geen null-aanwijzer is, wordt de waarde door de functie opgeslagen *_Eptr - str.c_str()*idx en geretourneerd.

stof

Converteert een tekenreeks naar een float.

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

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

Parameterwaarden

str
De tekenreeks die moet worden geconverteerd.

idx
De indexwaarde van het eerste niet-omgedraaide teken.

Retourwaarde

De float-waarde.

Opmerkingen

De functie converteert de reeks elementen naar str een waarde van het type float alsof door aan te roepen strtof( str.c_str(), _Eptr), waarbij _Eptr een object intern is voor de functie. Als str.c_str() == *_Eptr, het genereert een object van het type invalid_argument. Als een dergelijke aanroep zou worden ingesteld errno, wordt er een object van het type out_of_rangegegenereerd. idx Als dit geen null-aanwijzer is, wordt de waarde door de functie opgeslagen *_Eptr - str.c_str()*idx en geretourneerd.

stoi

Converteert een tekenreeks naar een geheel getal.

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

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

Retourwaarde

De waarde van het gehele getal.

Parameterwaarden

str
De tekenreeks die moet worden geconverteerd.

idx
De indexwaarde van het eerste niet-omgedraaide teken.

base
De te gebruiken numerieke basis.

Opmerkingen

De functie stoi converteert de reeks tekens in str naar een waarde van het type int en retourneert de waarde. Wanneer u bijvoorbeeld een tekenreeks '10' doorgeeft, is de geretourneerde stoi waarde het gehele getal 10.

stoi gedraagt zich vergelijkbaar met de functie strtol voor tekens met één byte wanneer deze wordt aangeroepen op de manier strtol( str.c_str(), _Eptr, idx), waarbij _Eptr een object intern is voor de functie; of wcstol voor brede tekens, wanneer deze op vergelijkbare wijze wordt aangeroepen, wcstol(Str.c_str(), _Eptr, idx). Zie , strtol, , voor wcstol_strtol_lmeer informatie_wcstol_l.

Als str.c_str() == *_Eptr, stoi genereert een object van het type invalid_argument. Als een dergelijke aanroep wordt ingesteld errnoof als de geretourneerde waarde niet kan worden weergegeven als een object van het type int, wordt er een object van het type out_of_rangegegenereerd. Als idx geen null-aanwijzer is, wordt de functie opgeslagen *_Eptr - str.c_str() in *idx.

stol

Converteert een tekenreeks naar een 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);

Parameterwaarden

str
De tekenreeks die moet worden geconverteerd.

idx
De indexwaarde van het eerste niet-omgedraaide teken.

base
De te gebruiken numerieke basis.

Retourwaarde

De waarde voor een lang geheel getal.

Opmerkingen

De functie converteert de reeks elementen in str naar een waarde van het type long alsof door aanroepen strtol( str.c_str(), _Eptr, idx), waarbij _Eptr een object intern is voor de functie. Als str.c_str() == *_Eptr, het genereert een object van het type invalid_argument. Als een dergelijke aanroep zou worden ingesteld errno, wordt er een object van het type out_of_rangegegenereerd. idx Als dit geen null-aanwijzer is, wordt de waarde door de functie opgeslagen *_Eptr - str.c_str()*idx en geretourneerd.

stold

Converteert een tekenreeks naar een long double.

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

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

Parameterwaarden

str
De tekenreeks die moet worden geconverteerd.

idx
De indexwaarde van het eerste niet-omgedraaide teken.

Retourwaarde

De long double-waarde.

Opmerkingen

De functie converteert de reeks elementen in str naar een waarde van het type long double alsof door aanroepen strtold( str.c_str(), _Eptr), waarbij _Eptr een object intern is voor de functie. Als str.c_str() == *_Eptr, het genereert een object van het type invalid_argument. Als een dergelijke aanroep zou worden ingesteld errno, wordt er een object van het type out_of_rangegegenereerd. idx Als dit geen null-aanwijzer is, wordt de waarde door de functie opgeslagen *_Eptr - str.c_str()*idx en geretourneerd.

stoll

Converteert een tekenreeks naar een 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);

Parameterwaarden

str
De tekenreeks die moet worden geconverteerd.

idx
De indexwaarde van het eerste niet-omgedraaide teken.

base
De te gebruiken numerieke basis.

Retourwaarde

De long long-waarde.

Opmerkingen

De functie converteert de reeks elementen in str naar een waarde van het type long long alsof door aanroepen strtoll( str.c_str(), _Eptr, idx), waarbij _Eptr een object intern is voor de functie. Als str.c_str() == *_Eptr, het genereert een object van het type invalid_argument. Als een dergelijke aanroep zou worden ingesteld errno, wordt er een object van het type out_of_rangegegenereerd. Als idx geen null-aanwijzer is, wordt de waarde door de functie opgeslagen *_Eptr - str.c_str()*idx en geretourneerd.

stoul

Converteert een tekenreeks naar een niet-ondertekende lange.

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

Parameterwaarden

str
De tekenreeks die moet worden geconverteerd.

idx
De indexwaarde van het eerste niet-omgedraaide teken.

base
De te gebruiken numerieke basis.

Retourwaarde

De niet-ondertekende waarde voor een lang geheel getal.

Opmerkingen

De functie converteert de reeks elementen in str naar een waarde van het type unsigned long alsof door aanroepen strtoul( str.c_str(), _Eptr, idx), waarbij _Eptr een object intern is voor de functie. Als str.c_str() == *_Eptr, het genereert een object van het type invalid_argument. Als een dergelijke aanroep zou worden ingesteld errno, wordt er een object van het type out_of_rangegegenereerd. Als idx geen null-aanwijzer is, wordt de waarde door de functie opgeslagen *_Eptr - str.c_str()*idx en geretourneerd.

stoull

Converteert een tekenreeks naar een 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);

Parameterwaarden

str
De tekenreeks die moet worden geconverteerd.

idx
De indexwaarde van het eerste niet-omgedraaide teken.

base
De te gebruiken numerieke basis.

Retourwaarde

De unsigned long long-waarde.

Opmerkingen

De functie converteert de reeks elementen in str naar een waarde van het type unsigned long long alsof door aanroepen strtoull( str.c_str(), _Eptr, idx), waarbij _Eptr een object intern is voor de functie. Als str.c_str() == *_Eptr, het genereert een object van het type invalid_argument. Als een dergelijke aanroep zou worden ingesteld errno, wordt er een object van het type out_of_rangegegenereerd. idx Als dit geen null-aanwijzer is, wordt de waarde door de functie opgeslagen *_Eptr - str.c_str()*idx en geretourneerd.

swap

Hiermee worden de matrices van tekens van twee tekenreeksen uitgewisseld.

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

Parameterwaarden

left
Eén tekenreeks waarvan de elementen moeten worden gewisseld met de elementen van een andere tekenreeks.

right
De andere tekenreeks waarvan de elementen moeten worden gewisseld met de eerste tekenreeks.

Opmerkingen

De sjabloonfunctie voert de gespecialiseerde lidfunctie left.swap(right) uit voor tekenreeksen, wat constante complexiteit garandeert.

Voorbeeld

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

Converteert een waarde naar een 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);

Parameterwaarden

value
De waarde die moet worden geconverteerd.

Retourwaarde

De string waarde die de waarde vertegenwoordigt.

Opmerkingen

De functie converteert waarde naar een reeks elementen die zijn opgeslagen in een matrixobject Buf intern naar de functie alsof door aanroepen sprintf(Buf, Fmt, value), waar Fmt is

  • "%d" als value van het type is int

  • "%u" als value van het type is unsigned int

  • "%ld" als value van het type is long

  • "%lu" als value van het type is unsigned long

  • "%lld" als value van het type is long long

  • "%llu" als value van het type is unsigned long long

  • "%f" indien value van het type float of double

  • "%Lf" als value van het type is long double

De functie retourneert string(Buf).

to_wstring

Converteert een waarde naar een brede tekenreeks.

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

Parameterwaarden

value
De waarde die moet worden geconverteerd.

Retourwaarde

De brede tekenreeks die de waarde vertegenwoordigt.

Opmerkingen

De functie wordt geconverteerd value naar een reeks elementen die zijn opgeslagen in een matrixobject Buf intern in de functie alsof door aanroepen swprintf(Buf, Len, Fmt, value), waar Fmt is

  • L"%d" als value van het type is int

  • L"%u" als value van het type is unsigned int

  • L"%ld" als value van het type is long

  • L"%lu" als value van het type is unsigned long

  • L"%lld" als value van het type is long long

  • L"%llu" als value van het type is unsigned long long

  • L"%f" indien value van het type float of double

  • L"%Lf" als value van het type is long double

De functie retourneert wstring(Buf).

Zie ook

<string>