Форум программистов, компьютерный форум CyberForum.ru

Stringstream C++ - C++

Восстановить пароль Регистрация
 
Auramel
0 / 0 / 0
Регистрация: 25.09.2014
Сообщений: 16
25.11.2015, 21:16     Stringstream C++ #1
Доброго времени суток!
Совсем недавно мне понадобились преобразования 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/s...ingstream/str/ Здесь написано, что метод str() возвращает string объект, то бишь int не может возвращать. Пошарил другие методы, ни нашел ни одного, который возвращал бы int. Может, знает кто, как через методы получить мне int?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2015, 21:16     Stringstream C++
Посмотрите здесь:

C++ Проблемы с созданием потока stringstream
Ошибки при использовании stringstream C++
C++ std::stringstream precision
Stringstream и считывание по строчно C++
C++ Как сделать std::stringstream
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4303 / 3724 / 1255
Регистрация: 14.04.2014
Сообщений: 14,586
25.11.2015, 21:22     Stringstream C++ #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;
}
MaKaRoN IV
 Аватар для MaKaRoN IV
15 / 15 / 6
Регистрация: 20.04.2013
Сообщений: 64
25.11.2015, 21:23     Stringstream C++ #3
Ссылка с решением на stackoverflow для конвертирования числа в строку.

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

C++
1
std::stoi( str )
nmcf
4303 / 3724 / 1255
Регистрация: 14.04.2014
Сообщений: 14,586
25.11.2015, 21:23     Stringstream C++ #4
А для преобразования в строку - to_string().
Auramel
0 / 0 / 0
Регистрация: 25.09.2014
Сообщений: 16
25.11.2015, 21:24  [ТС]     Stringstream C++ #5
да, я использовал раньше все эти разновидности atoi, stoi и прочие, но вот stringstream заинтересовал
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1859 / 1655 / 577
Регистрация: 14.05.2014
Сообщений: 4,755
Записей в блоге: 1
Завершенные тесты: 5
25.11.2015, 21:25     Stringstream C++ #6
Auramel, std::to_string(int/long/float/double) и std::stoi(std::string). Вторая функция начиная с С++11.
Yandex
Объявления
25.11.2015, 21:25     Stringstream C++
Ответ Создать тему
Опции темы

Текущее время: 18:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru