Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Auramel
2 / 2 / 0
Регистрация: 25.09.2014
Сообщений: 41
#1

Stringstream C++ - C++

25.11.2015, 21:16. Просмотров 835. Ответов 5
Метки нет (Все метки)

Доброго времени суток!
Совсем недавно мне понадобились преобразования int to string и наоборот. Заинтересовал метод, используя stringstream.

Я написал 2 функции. Одна преобразует из int в string, другая наоборот. Получилось примерно так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <string>
#include <sstream>
 
using namespace std;
 
string intToString(int value)
{
    stringstream ss;
 
    ss << value;
 
    return ss.str();
}
 
int stringToInt(string value)
{
    stringstream    ss;
    int             buffer;
 
    ss << value;
    ss >> buffer;
 
    return buffer;
}
 
int main(int argc, char* argv[])
{
    cout << stringToInt("123");
    cout << intToString(123);
    return 0;
}
код рабочий, но меня не устраивает тот факт, что приходится использовать временный буфер в функции stringToInt(), чтобы сохранить в него данные, а потом возвращать его. Если убрать буфер и написать return ss.str(), то будет ошибка. Почитал документацию на http://www.cplusplus.com/reference/sstream/stringstream/str/ Здесь написано, что метод str() возвращает string объект, то бишь int не может возвращать. Пошарил другие методы, ни нашел ни одного, который возвращал бы int. Может, знает кто, как через методы получить мне int?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2015, 21:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Stringstream C++ (C++):

Использование stringstream - C++
Добрый день!

Stringstream и считывание по строчно - C++
Есть вот такой список смежности: 2 3 3 2 Как его правильно считать? Мне говорили что это можно сделать с помощью stringstream,...

Не подключается stringstream в проект - C++
Здравствуйте, у меня есть небольшой проект к которому подключено несколько сторонних библиотек. Сам проект разбит на 13 файлов, в каждом из...

Передать stringstream аргументом - C++
Есть абстрактный логгер с перегрузкой оператора () Хочется передавать в него любые аргументы, для которых у ostream есть перегрузка ...

Ипользование класса stringstream - C++
Всем привет. Дело такое: задача одного из моих методов класса запросить вводи имени клиента и его номер счета, ну и сохранить их в...

Stringstream нечего не выводит - C++
s=wcstod(str, NULL); std::stringstream ss; ss &lt;&lt; s; double u; ss &gt;&gt; u; Почему нечего не выводиться ?

5
nmcf
5754 / 5065 / 1732
Регистрация: 14.04.2014
Сообщений: 20,749
25.11.2015, 21:22 #2
Есть функция stoi(), если компилятор не древний.
Твой вариант проще не сделаешь, можно только убрать 21-ю строку:
C++
1
2
3
4
5
6
7
8
9
int stringToInt(string value)
{
    istringstream    ss(value);
    int             buffer;
 
    ss >> buffer;
 
    return buffer;
}
0
MaKaRoN IV
15 / 15 / 6
Регистрация: 20.04.2013
Сообщений: 64
25.11.2015, 21:23 #3
Ссылка с решением на stackoverflow для конвертирования числа в строку.

C++
1
std::string s = std::to_string(42);
Ссылка с решением на stackoverflow для конвертирования строки в число.

C++
1
std::stoi( str )
0
nmcf
5754 / 5065 / 1732
Регистрация: 14.04.2014
Сообщений: 20,749
25.11.2015, 21:23 #4
А для преобразования в строку - to_string().
0
Auramel
2 / 2 / 0
Регистрация: 25.09.2014
Сообщений: 41
25.11.2015, 21:24  [ТС] #5
да, я использовал раньше все эти разновидности atoi, stoi и прочие, но вот stringstream заинтересовал
0
Kerry_Jr
Модератор
Эксперт PHP
2207 / 2003 / 701
Регистрация: 14.05.2014
Сообщений: 5,870
Записей в блоге: 1
Завершенные тесты: 5
25.11.2015, 21:25 #6
Auramel, std::to_string(int/long/float/double) и std::stoi(std::string). Вторая функция начиная с С++11.
1
25.11.2015, 21:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2015, 21:25
Привет! Вот еще темы с ответами:

std::stringstream precision - C++
Как обрезать количество символов во входной строковой поток? к примеру: float a=4.768123; std::stringstream ss; ss &lt;&lt; a; ...

Ошибки при использовании stringstream - C++
Текст программы: #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; int main()...

Чем отличается istringstream от stringstream? - C++
можете объяснить работу каждого оператора?

Как сделать std::stringstream - C++
Как преобразовать из &quot;const char *&quot; в &quot;LPCWSTR&quot; ... std::stringstream Str_Stream; Str_Stream &lt;&lt; App_Tittle.c_str() &lt;&lt; &quot; FPS: &quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.