Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Заголовок <string>
предоставляет следующие функции:
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
выполняется аналогично функции для однобайтовых символов, когда он вызывается таким образом, где strtol
является объектом внутренней функцииstrtol( str.c_str(), _Eptr, idx)
; или _Eptr
для расширенных символов, когда он вызывается аналогичным образомwcstol
.wcstol(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)
.