<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_stream
wejś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
naios_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 ustawionain_stream
naios_base::failbit
.Inny błąd niż wymienione wcześniej; flaga stanu wewnętrznego jest ustawiona
in_stream
naios_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::failbit
wartość . 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() == *_Eptr
parametr zgłasza obiekt typu invalid_argument
. Jeśli takie wywołanie ustawi errno
wartość , 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() == *_Eptr
parametr zgłasza obiekt typu invalid_argument
. Jeśli takie wywołanie ustawi errno
wartość , 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_l
wcstol
, _wcstol_l
.strtol
Jeśli str.c_str() == *_Eptr
obiekt stoi
typu , zgłasza obiekt invalid_argument
typu . Jeśli takie wywołanie ustawi errno
wartość , 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() == *_Eptr
parametr zgłasza obiekt typu invalid_argument
. Jeśli takie wywołanie ustawi errno
wartość , 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() == *_Eptr
parametr zgłasza obiekt typu invalid_argument
. Jeśli takie wywołanie ustawi errno
wartość , 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() == *_Eptr
parametr zgłasza obiekt typu invalid_argument
. Jeśli takie wywołanie ustawi errno
wartość , 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() == *_Eptr
parametr zgłasza obiekt typu invalid_argument
. Jeśli takie wywołanie ustawi errno
wartość , 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() == *_Eptr
parametr zgłasza obiekt typu invalid_argument
. Jeśli takie wywołanie ustawi errno
wartość , 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.swap
skł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ślivalue
jest typuint
"%u"
jeślivalue
jest typuunsigned int
"%ld"
jeślivalue
jest typulong
"%lu"
jeślivalue
jest typuunsigned long
"%lld"
jeślivalue
jest typulong long
"%llu"
jeślivalue
jest typuunsigned long long
"%f"
jeślivalue
jest typufloat
lubdouble
"%Lf"
jeślivalue
jest typulong 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ślivalue
jest typuint
L"%u"
jeślivalue
jest typuunsigned int
L"%ld"
jeślivalue
jest typulong
L"%lu"
jeślivalue
jest typuunsigned long
L"%lld"
jeślivalue
jest typulong long
L"%llu"
jeślivalue
jest typuunsigned long long
L"%f"
jeślivalue
jest typufloat
lubdouble
L"%Lf"
jeślivalue
jest typulong double
Funkcja zwraca wstring(Buf)
wartość .