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

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

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

Stringstream C++ - C++

25.11.2015, 21:16. Просмотров 492. Ответов 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/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
C++ Не подключается stringstream в проект
C++ Использование stringstream
Не корректно работает вывод из потока stringstream C++
C++ Чем отличается istringstream от stringstream?
C++ Очистить поток std::stringstream
Ипользование класса stringstream C++
Stringstream нечего не выводит C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4944 / 4282 / 1431
Регистрация: 14.04.2014
Сообщений: 16,806
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
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
4944 / 4282 / 1431
Регистрация: 14.04.2014
Сообщений: 16,806
25.11.2015, 21:23     Stringstream C++ #4
А для преобразования в строку - to_string().
Auramel
2 / 2 / 0
Регистрация: 25.09.2014
Сообщений: 29
25.11.2015, 21:24  [ТС]     Stringstream C++ #5
да, я использовал раньше все эти разновидности atoi, stoi и прочие, но вот stringstream заинтересовал
Kerry_Jr
Модератор
Эксперт PHP
2142 / 1938 / 677
Регистрация: 14.05.2014
Сообщений: 5,683
Записей в блоге: 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++
Ответ Создать тему
Опции темы

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