Поделиться через


<string>Функции

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

getline

Извлекает строки из входного потока, последовательно по одной строке.

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

Параметры

in_stream
Входной поток, из которого извлекается строка.

str
Строка, в которую считываются символы из входного потока.

delimiter
Разделитель строк.

Возвращаемое значение

Входной поток in_stream.

Замечания

Пара подписей функций, обозначенных как (1), извлекает символы из in_stream до обнаружения delimiter и сохраняет их в str.

Пара подписей функций, помеченная (2) , использует новую строку в качестве разделителя строк по умолчанию и ведет себя как getline(in_stream, str, in_stream. widen('\n')).

Вторая функция каждой пары является аналогом первой для поддержки rvalue ссылок.

Извлечение останавливается при возникновении одного из следующих условий.

  • В конце файла, в этом случае для внутреннего флага in_stream состояния задано значение ios_base::eofbit.

  • После извлечения элемента, который сравнивается с delimiter. Элемент не возвращает или добавляется к управляемой последовательности.

  • После извлечения str.max_size элементов функции. Для внутреннего флага in_stream состояния задано ios_base::failbitзначение .

  • Некоторые другие ошибки, отличные от перечисленных ранее; Для внутреннего флага in_stream состояния задано значение ios_base::badbit.

Дополнительные сведения о внутренних флагах состояния см. в разделе ios_base::iostate.

Если функция не извлекает никаких элементов, для внутреннего флага in_stream устанавливается значение ios_base::failbit. Во всех случаях getline возвращает in_stream.

При возникновении исключения in_stream и str остаются в допустимом состоянии.

Пример

Следующий код демонстрирует getline() в двух режимах: в первом с разделителем — символом новой строки (по умолчанию), во втором с разделителем — пробелом. Символ конца файла (CTRL-Z на клавиатуре) используется для управления завершением циклов while. Это значение задает для внутреннего флага cin eofbitсостояния, который должен быть очищен до basic_ios::clear() второго во время правильной работы цикла.

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

Преобразует последовательность символов в double.

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

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

Параметры

str
Последовательность символов для преобразования.

idx
Значение индекса первого непреобразованного символа.

Возвращаемое значение

Значение типа double.

Замечания

Функция преобразует последовательность элементов в str значение типа double , как будто вызывая strtod( str.c_str(), _Eptr), где _Eptr находится объект внутренний в функцию. Если str.c_str() == *_Eptrобъект типа invalid_argumentвызывается. Если такой вызов задает errno, то создается объект типа out_of_range. В противном случае, если idx не является пустым указателем, функция сохраняет *_Eptr - str.c_str() *idx и возвращает значение.

stof

Преобразует последовательность символов в число с плавающей запятой.

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

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

Параметры

str
Последовательность символов для преобразования.

idx
Значение индекса первого непреобразованного символа.

Возвращаемое значение

Значение типа float.

Замечания

Функция преобразует последовательность элементов в str значение типа float , как будто вызывая strtof( str.c_str(), _Eptr), где _Eptr находится объект внутренний в функцию. Если str.c_str() == *_Eptrобъект типа invalid_argumentвызывается. Если такой вызов задает errno, то создается объект типа out_of_range. В противном случае, если idx не является пустым указателем, функция сохраняет *_Eptr - str.c_str() *idx и возвращает значение.

stoi

Преобразует последовательность символов в целое число.

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

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

Возвращаемое значение

Целочисленное значение.

Параметры

str
Последовательность символов для преобразования.

idx
Значение индекса первого непреобразованного символа.

base
Используемое числовое основание.

Замечания

Функция stoi преобразует последовательность символов в str в значение типа int и возвращает значение. Например, если передать последовательность символов "10", stoi возвращает целочисленное значение 10.

stoiвыполняется аналогично функции для однобайтовых символов, когда он вызывается таким образом, где _Eptr является объектом внутренней функцииstrtol; или wcstol для расширенных символов, когда он вызывается аналогичным образомwcstol(Str.c_str(), _Eptr, idx).strtol( str.c_str(), _Eptr, idx) Дополнительные сведения см. в разделе strtol, wcstol, _strtol_l. _wcstol_l

Если str.c_str() == *_Eptr, stoi создает объект типа invalid_argument. Если такой вызов задается errnoили если возвращаемое значение не может быть представлено как объект типа int, он создает объект типа out_of_range. В противном случае, если idx не является указателем NULL, функция хранится *_Eptr - str.c_str() в *idx.

stol

Преобразует последовательность символов в 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);

Параметры

str
Последовательность символов для преобразования.

idx
Значение индекса первого непреобразованного символа.

base
Используемое числовое основание.

Возвращаемое значение

Длинное целое значение.

Замечания

Функция преобразует последовательность элементов в str в значение типа long , как если бы вызывая strtol( str.c_str(), _Eptr, idx), где _Eptr является объект внутренний в функцию. Если str.c_str() == *_Eptrобъект типа invalid_argumentвызывается. Если такой вызов задает errno, то создается объект типа out_of_range. В противном случае, если idx не является пустым указателем, функция сохраняет *_Eptr - str.c_str() *idx и возвращает значение.

stold

Преобразует последовательность символов в long double.

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

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

Параметры

str
Последовательность символов для преобразования.

idx
Значение индекса первого непреобразованного символа.

Возвращаемое значение

Значение типа long double.

Замечания

Функция преобразует последовательность элементов в str в значение типа long double , как если бы вызывая strtold( str.c_str(), _Eptr), где _Eptr является объект внутренний в функцию. Если str.c_str() == *_Eptrобъект типа invalid_argumentвызывается. Если такой вызов задает errno, то создается объект типа out_of_range. В противном случае, если idx не является пустым указателем, функция сохраняет *_Eptr - str.c_str() *idx и возвращает значение.

stoll

Преобразует последовательность символов в 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);

Параметры

str
Последовательность символов для преобразования.

idx
Значение индекса первого непреобразованного символа.

base
Используемое числовое основание.

Возвращаемое значение

Значение типа long long.

Замечания

Функция преобразует последовательность элементов в str в значение типа long long , как если бы вызывая strtoll( str.c_str(), _Eptr, idx), где _Eptr является объект внутренний в функцию. Если str.c_str() == *_Eptrобъект типа invalid_argumentвызывается. Если такой вызов задает errno, то создается объект типа out_of_range. В противном случае, если idx не является указателем NULL, функция сохраняет *_Eptr - str.c_str() *idx и возвращает значение.

stoul

Преобразует последовательность символов в длинное целое без знака.

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

Параметры

str
Последовательность символов для преобразования.

idx
Значение индекса первого непреобразованного символа.

base
Используемое числовое основание.

Возвращаемое значение

Длинное целое значение без знака.

Замечания

Функция преобразует последовательность элементов в str в значение типа unsigned long , как если бы вызывая strtoul( str.c_str(), _Eptr, idx), где _Eptr является объект внутренний в функцию. Если str.c_str() == *_Eptrобъект типа invalid_argumentвызывается. Если такой вызов задает errno, то создается объект типа out_of_range. В противном случае, если idx не является указателем NULL, функция сохраняет *_Eptr - str.c_str() *idx и возвращает значение.

stoull

Преобразует последовательность символов в 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);

Параметры

str
Последовательность символов для преобразования.

idx
Значение индекса первого непреобразованного символа.

base
Используемое числовое основание.

Возвращаемое значение

Значение типа unsigned long long.

Замечания

Функция преобразует последовательность элементов в str в значение типа unsigned long long , как если бы вызывая strtoull( str.c_str(), _Eptr, idx), где _Eptr является объект внутренний в функцию. Если str.c_str() == *_Eptrобъект типа invalid_argumentвызывается. Если такой вызов задает errno, то создается объект типа out_of_range. В противном случае, если idx не является пустым указателем, функция сохраняет *_Eptr - str.c_str() *idx и возвращает значение.

swap

Меняет местами массивы символов двух строк.

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

Параметры

left
Одна строка, элементы которой должны быть заменены элементами другой строки.

right
Другая строка, элементы которой будут заменены на элементы первой строки.

Замечания

Функция шаблона выполняет специализированную функцию-член left.swap(right) для строк, которая гарантирует постоянную сложность.

Пример

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

Преобразует значение в 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);

Параметры

value
Преобразуемое значение.

Возвращаемое значение

Объект string, представляющий значение.

Замечания

Функция преобразует значение в последовательность элементов, хранящихся во внутреннем объекте Buf массива, в функцию, как при вызове sprintf(Buf, Fmt, value), где Fmt находится

  • "%d" Значение value типа int

  • "%u" Значение value типа unsigned int

  • "%ld" Значение value типа long

  • "%lu" Значение value типа unsigned long

  • "%lld" Значение value типа long long

  • "%llu" Значение value типа unsigned long long

  • "%f" Значение value типа float или double

  • "%Lf" Значение value типа long double

Функция возвращает string(Buf).

to_wstring

Преобразует значение в расширенную строку.

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

Параметры

value
Преобразуемое значение.

Возвращаемое значение

Расширенная строка, представляющая значение.

Замечания

Эта функция преобразовывает value в последовательность элементов, хранящихся в объекте массива Buf, размещенного внутри функции, как если бы выполнялся вызов swprintf(Buf, Len, Fmt, value), где Fmt равняется

  • L"%d" Значение value типа int

  • L"%u" Значение value типа unsigned int

  • L"%ld" Значение value типа long

  • L"%lu" Значение value типа unsigned long

  • L"%lld" Значение value типа long long

  • L"%llu" Значение value типа unsigned long long

  • L"%f" Значение value типа float или double

  • L"%Lf" Значение value типа long double

Функция возвращает wstring(Buf).

См. также

<string>