Name already in use
cpp-docs / docs / standard-library / string-functions.md
- Go to file T
- Go to line L
- Copy path
- Copy permalink
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents
Copy raw contents
Copy raw contents
Extract strings from the input stream line-by-line.
in_stream
The input stream from which a string is to be extracted.
str
The string into which are read the characters from the input stream.
delimiter
The line delimiter.
The input stream in_stream .
The pair of function signatures marked (1) extract characters from in_stream until delimiter is found, storing them in str .
The pair of function signatures marked (2) use newline as the default line delimiter and behave as getline(in_stream, str, in_stream. widen(‘\n’)) .
The second function of each pair is an analog to the first one to support rvalue references.
Extraction stops when one of the following occurs:
At end of file, in which case the internal state flag of in_stream is set to ios_base::eofbit .
After the function extracts an element that compares equal to delimiter . The element doesn’t get put back or appended to the controlled sequence.
After the function extracts str.max_size elements. The internal state flag of in_stream is set to ios_base::failbit .
Some other error other than the ones previously listed; the internal state flag of in_stream is set to ios_base::badbit .
For information about internal state flags, see ios_base::iostate .
If the function extracts no elements, the internal state flag of in_stream is set to ios_base::failbit . In any case, getline returns in_stream .
If an exception is thrown, in_stream and str are left in a valid state.
The following code demonstrates getline() in two modes: first with the default delimiter (newline) and second with a whitespace as delimiter. The end-of-file character (CTRL-Z on the keyboard) is used to control termination of the while loops. This value sets the internal state flag of cin to eofbit , which must be cleared with basic_ios::clear() before the second while loop will work properly.
Converts a character sequence to a double .
str
The character sequence to be converted.
idx
The index value of the first unconverted character.
The double value.
The function converts the sequence of elements in str to a value of type double as if by calling strtod( str.c_str(), _Eptr) , where _Eptr is an object internal to the function. If str.c_str() == *_Eptr , it throws an object of type invalid_argument . If such a call would set errno , it throws an object of type out_of_range . Otherwise, if idx isn’t a null pointer, the function stores *_Eptr — str.c_str() in *idx and returns the value.
Converts a character sequence to a float.
str
The character sequence to be converted.
idx
The index value of the first unconverted character.
The float value.
The function converts the sequence of elements in str to a value of type float as if by calling strtof( str.c_str(), _Eptr) , where _Eptr is an object internal to the function. If str.c_str() == *_Eptr , it throws an object of type invalid_argument . If such a call would set errno , it throws an object of type out_of_range . Otherwise, if idx isn’t a null pointer, the function stores *_Eptr — str.c_str() in *idx and returns the value.
Converts a character sequence to an integer.
The integer value.
str
The character sequence to be converted.
idx
The index value of the first unconverted character.
base
The number base to use.
The function stoi converts the sequence of characters in str to a value of type int and returns the value. For example, when passed a character sequence «10», the value returned by stoi is the integer 10.
stoi behaves similarly to the function strtol for single-byte characters when it’s called in the manner strtol( str.c_str(), _Eptr, idx) , where _Eptr is an object internal to the function; or wcstol for wide characters, when it’s called in similar manner, wcstol(Str.c_str(), _Eptr, idx) . For more information, see strtol , wcstol , _strtol_l , _wcstol_l .
If str.c_str() == *_Eptr , stoi throws an object of type invalid_argument . If such a call would set errno , or if the returned value can’t be represented as an object of type int , it throws an object of type out_of_range . Otherwise, if idx isn’t a null pointer, the function stores *_Eptr — str.c_str() in *idx .
Converts a character sequence to a long .
str
The character sequence to be converted.
idx
The index value of the first unconverted character.
base
The number base to use.
The long-integer value.
The function converts the sequence of elements in str to a value of type long as if by calling strtol( str.c_str(), _Eptr, idx) , where _Eptr is an object internal to the function. If str.c_str() == *_Eptr , it throws an object of type invalid_argument . If such a call would set errno , it throws an object of type out_of_range . Otherwise, if idx isn’t a null pointer, the function stores *_Eptr — str.c_str() in *idx and returns the value.
Converts a character sequence to a long double .
str
The character sequence to be converted.
idx
The index value of the first unconverted character.
The long double value.
The function converts the sequence of elements in str to a value of type long double as if by calling strtold( str.c_str(), _Eptr) , where _Eptr is an object internal to the function. If str.c_str() == *_Eptr , it throws an object of type invalid_argument . If such a call would set errno , it throws an object of type out_of_range . Otherwise, if idx isn’t a null pointer, the function stores *_Eptr — str.c_str() in *idx and returns the value.
Converts a character sequence to a long long .
str
The character sequence to be converted.
idx
The index value of the first unconverted character.
base
The number base to use.
The long long value.
The function converts the sequence of elements in str to a value of type long long as if by calling strtoll( str.c_str(), _Eptr, idx) , where _Eptr is an object internal to the function. If str.c_str() == *_Eptr , it throws an object of type invalid_argument . If such a call would set errno , it throws an object of type out_of_range . Otherwise, if idx isn’t a null pointer, the function stores *_Eptr — str.c_str() in *idx and returns the value.
Converts a character sequence to an unsigned long.
str
The character sequence to be converted.
idx
The index value of the first unconverted character.
base
The number base to use.
The unsigned long-integer value.
The function converts the sequence of elements in str to a value of type unsigned long as if by calling strtoul( str.c_str(), _Eptr, idx) , where _Eptr is an object internal to the function. If str.c_str() == *_Eptr , it throws an object of type invalid_argument . If such a call would set errno , it throws an object of type out_of_range . Otherwise, if idx isn’t a null pointer, the function stores *_Eptr — str.c_str() in *idx and returns the value.
Converts a character sequence to an unsigned long long .
str
The character sequence to be converted.
idx
The index value of the first unconverted character.
base
The number base to use.
The unsigned long long value.
The function converts the sequence of elements in str to a value of type unsigned long long as if by calling strtoull( str.c_str(), _Eptr, idx) , where _Eptr is an object internal to the function. If str.c_str() == *_Eptr , it throws an object of type invalid_argument . If such a call would set errno , it throws an object of type out_of_range . Otherwise, if idx isn’t a null pointer, the function stores *_Eptr — str.c_str() in *idx and returns the value.
Exchanges the arrays of characters of two strings.
left
One string whose elements are to be swapped with the elements of another string.
right
The other string whose elements are to be swapped with the first string.
СТД:стул,СТД:стол,СТД:столл.
Интерпретирует целочисленное значение со знаком в строке str .
Отбрасывает любые пробельные символы (определяемые вызовом std::isspace ) до тех пор, пока не будет найден первый непробельный символ, затем берет столько символов, сколько возможно, чтобы сформировать допустимый base-n (где n= base ) целочисленное числовое представление и преобразует их в целочисленное значение. Допустимое целочисленное значение состоит из следующих частей:
- (необязательно) знак плюс или минус
- (факультативно) префикс ( 0 ) , указывающий восьмеричное основание (применяется только тогда , когда основание 8 или 0 )
- (необязательно) префикс ( 0x или 0X ) , что указывает шестнадцатеричное основание (применяется только тогда , когда основание 16 или 0 )
- последовательность цифр
Набор допустимых значений для базы: <0,2,3. 36>. Набор допустимых цифр для целых чисел по основанию 2 — <0,1>, для целых чисел по основанию 3 — <0,1,2>, и т. д. Для оснований больше 10 допустимые цифры включают буквенные символы, начиная с Aa для целого числа с основанием 11 до Zz для целого числа с основанием 36 . Регистр символов игнорируется.
Дополнительные числовые форматы могут приниматься текущей установленной локалью C.
Если значение base равно 0 , числовое основание определяется автоматически: если префикс равен 0 , основание восьмеричное, если префикс 0x или 0X , основание шестнадцатеричное, в противном случае основание десятичное.
Если знак минус был частью входной последовательности, числовое значение, вычисленное из последовательности цифр, сводится как бы к унарному минусу в типе результата.
Stoi в C++
Программирование и разработка
В этой статье будет рассмотрено понятие функции stoi() в языке программирования C++. Stoi — это аббревиатура от «строки в целое число». Функция stoi() на простом языке просто преобразует строки в целые числа на языке программирования C++. Как мы все знаем, язык программирования C++ — один из привилегированных языков программирования, который позволяет преобразовывать типы данных с помощью различных функций и методов, и функция stoi — отличный пример этого утверждения.
Преобразование типов данных в C++:
В программировании на C++ довольно распространено преобразование типов данных. Приведение типов — еще один термин для этого. Преобразование типов данных часто называют приведением типов. В языке программирования C++ существует два типа приведения или преобразования типов: неявное и явное приведение типов.
Итак, если вы хотите преобразовать переменную строкового типа данных в целое число в программировании на C++, у нас есть несколько методов, определенных в библиотеках заголовочных файлов C++. Эти методы перечислены ниже:
- The atoi () function
- The stringstream () class
- The stoi () function
Функция atoi()
Функция atoi() преобразует строку с завершающим нулем, содержащую нулевой символ «\0», в переменную целочисленного типа данных. Данная функция atoi() принимает строковую переменную в качестве параметра, преобразует ее в целочисленную переменную и сохраняет в новую переменную, в которой она вызывается. Синтаксис функции atoi на языке программирования C++ описан ниже.
Класс stringstream()
В C++ класс stringstream является классом Stream. Класс stringstream реализует операции ввода/вывода потока в памяти, то есть string. Строковый объект можно обрабатывать как поток в C++ с помощью класса stringstream. Он используется для управления строками. Мы можем выполнять операции извлечения и вставки из/в строки, рассматривая их как потоки, точно так же, как потоки cin и cout. Эти операции обычно используются для преобразования строковых типов данных в числовые типы данных и наоборот. Класс stringstream также полезен для различных задач синтаксического анализа. Теперь рассмотрим синтаксис использования этого метода в программировании на C++:
«Str» — это строковая переменная, которую мы хотим преобразовать, а «n» — это целое число, в котором будет храниться преобразованное значение строковой переменной.
Теперь мы обсудим функцию stoi() в программировании на C++.
Функция stoi()
Эта функция в C++ используется для преобразования числовых строк в целые числа. Возможности stoi также можно использовать для удаления другого материала из строки, например завершающих символов. Итак, программисты C++ используют функцию stoi() для преобразования переменных строкового типа данных в целочисленный тип данных. Синтаксис функции stoi() на языке программирования C++ написан ниже:
Функция stoi() в Ubuntu 20.04
Давайте реализуем функцию stoi() в среде Ubuntu 20.04, чтобы лучше понять эту функцию. Для этого мы должны сначала узнать, что в среде Ubuntu файлы программ C++ сохраняются с расширением «.cpp». Для этого откройте терминал и введите «cd Desktop» в командной строке, затем нажмите клавишу ввода и введите «touch filename.cpp», чтобы создать файл с расширением «.cpp» на нашем рабочем столе.
Преобразование строковой переменной в целочисленную переменную с помощью функции stoi() в C++
Приведенный ниже код, прикрепленный к приложенному изображению, объясняет, что изначально у нас было две библиотеки заголовков. Первый — это iostream, а второй и самый важный — строка. После этого мы должны начать писать нашу основную функцию. Мы указали переменную под названием «str» с типом данных строки и присвоили ей значение. После этого мы объявили переменную с целочисленным типом данных. Мы передали строку функции stoi(). Затем мы использовали оператор cout для получения вывода переменной «Число» и завершили основную функцию.

Закройте файл после нажатия кнопки сохранения. Чтобы создать выходной файл, вернитесь к терминалу и введите «g++» с именем вашего файла и расширением «.cpp». Эта команда создаст файл с расширением «.out». Введя команду «./», а затем расширение «.out», теперь вы можете запустить этот файл, чтобы получить желаемый результат.

Мы успешно преобразовали строковую переменную «str» в целочисленную переменную с именем «Number», используя функцию stoi() в программировании на C++, так как отображается целое число «Number», а не строковая переменная «str». Мы рассмотрим строковую переменную с другими символами и даже с алфавитами, чтобы увидеть, как реагирует функция stoi().
Преобразование строковой переменной в целое число с символом с помощью функции stoi() в C++
Сначала мы преобразуем строку с символом в целое число и посмотрим, как оно будет преобразовано. Чтобы реализовать это в Ubuntu, мы выполним вышеупомянутые шаги, чтобы написать фрагмент кода в файле «.cpp».

В приведенном выше примере кода у нас есть библиотеки iostream и string. Затем мы подошли к функции main() с целочисленным типом данных. Мы объявили переменную «str» со строковым типом данных и присвоили ей значение «-4». Мы использовали знак минус, чтобы начать строковую переменную, а затем преобразовали ее в целое число с помощью функции stoi(). Ответ будет сохранен в переменной под названием «I» с целочисленным типом данных и, наконец, напечатан. Давайте посмотрим на фрагмент вывода этого кода ниже:

Как видно из приведенного выше вывода, функция stoi() преобразует знак минус, который также присутствует в строке.
Преобразование строковой переменной в целое число с символами до и после чисел с помощью функции stoi() в C++
Мы преобразовали строковое значение в целое число с помощью одного символа, но что, если в строке есть другие символы до или после чисел? Давайте посмотрим на примере ниже:

В приведенном выше коде мы снова использовали библиотеки iostream и string. Затем мы подошли к функции main() с целочисленным типом данных. Мы объявили переменную «str» со строковым типом данных и присвоили ей значение «1+2». Вы можете проверить, что мы использовали оператор приращения в коде. Затем мы преобразовали значение в целое число с помощью функции stoi(), как показано в приведенном выше коде. Ответ будет сохранен в переменной под названием «i» с целочисленным типом данных и, наконец, напечатан. Давайте посмотрим на фрагмент вывода этого кода ниже:
Мы добавили знак плюс между двумя числами в строке и преобразовали его в целое число с помощью функции stoi().

Как видно из вывода, функция stoi() сохранила только первое число и проигнорировала символ и другое число после него.
Преобразование строковой переменной в целое число с алфавитами и числами с помощью функции stoi() в C++
В этом примере мы будем добавлять алфавиты и числа в строковое значение, чтобы преобразовать его в целочисленные значения с помощью функции stoi() в C++. Мы выполним следующий код, чтобы убедиться, что строковая переменная преобразует целочисленные переменные, включая алфавиты и числа, с помощью функции stoi():

Приведенный выше вывод объясняет, что функция stoi() полностью игнорировала алфавиты в строке и сохраняла число только при преобразовании строки. Итак, мы пришли к выводу, что при использовании функции stoi() для преобразования в строке будет сохранено только первое число.

Заключение
В этой статье обсуждалась функция stoi() в языке программирования C++. Также было объяснено использование методов и функций для преобразования типов данных. Мы также рассмотрели различные типы преобразования типов данных, разрешенные в программировании на C++. В конце концов, функция stoi также была реализована на языке программирования C++ в среде Ubuntu 20.04 с различными типами дополнений в строковой переменной, чтобы помочь нам лучше понять ее работу.
Stoi в c какая библиотека
Нередко может возникнуть необходимость объединить строку с данными других типов, например, числами. Однако объединить строку мы можем только с другой строкой. Поэтому данные других типов вначале необходимо преобразовать в строку. Для преобразования в строку применяется функция std:to_string() , в которую передается преобразуемое значение:
Функции преобразования из строки в число
Нередко может вощникнуть противиположная задача — преобразовать строку в другой тип. Есть ряд функций, которые преобразуют строку в число определенного типа:
stoi() : преобразует в тип int
stoll() : в long long
stoul() : в unsigned long
stoull() : в unsigned long long
stold() : в long double
Все они определены в модуле <string> , работают однотипно и в качестве параметра принимают преобразуемую строку:
Преобразование строки в указатель на символы
При необходимости можно преобразовать значение типа string в указатель на символы. Для преобразования в указатель на константную строку применяется метод c_str() :
Для получения указателя также можно применять метод data() , который возвращает указатель на неконстантное значение, если объект string не является константой.