Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/47: Рейтинг темы: голосов - 47, средняя оценка - 4.57
2 / 2 / 4
Регистрация: 25.09.2014
Сообщений: 41
1

Stringstream C++

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

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Совсем недавно мне понадобились преобразования 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/refer... tream/str/ Здесь написано, что метод str() возвращает string объект, то бишь int не может возвращать. Пошарил другие методы, ни нашел ни одного, который возвращал бы int. Может, знает кто, как через методы получить мне int?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2015, 21:16
Ответы с готовыми решениями:

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

Stringstream и оператор >>
Доброго времени. Код: #include &lt;iostream&gt; #include &lt;sstream&gt; using namespace std; int...

Std::stringstream
Добрый день! Я не понимаю почему я ввожу в поток std::stringstream три элемента, число, строку и...

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

5
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
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
16 / 16 / 12
Регистрация: 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
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
25.11.2015, 21:23 4
А для преобразования в строку - to_string().
0
2 / 2 / 4
Регистрация: 25.09.2014
Сообщений: 41
25.11.2015, 21:24  [ТС] 5
да, я использовал раньше все эти разновидности atoi, stoi и прочие, но вот stringstream заинтересовал
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2015, 21:25
Помогаю со студенческими работами здесь

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

Stringstream и считывание по строчно
Есть вот такой список смежности: 2 3 3 2 Как его правильно считать? Мне говорили что это...

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru