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