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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
#1

нет декларации to_string - C++

23.03.2013, 14:27. Просмотров 1144. Ответов 18
Метки нет (Все метки)

Программа сочетает 2 ф-ии: Если есть второй аргумент (пришлось данное условие задавать статично =\) то сравниваем str1 с str2, если второй аргумент не задан (не удовлетворяет статичному условию), то выводим размер str1.
Ругается на декларацию в области видимости.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
 
using namespace std;
 
string strr(string str1, string str2="hello")
{
    if(str2=="hello")
    return str1.size()>=str2.size()? str1:str2;
    else
    return to_string(str1.size());
}
int main ()
{
    cout<<strr("garrr")<<endl;
return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2013, 14:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос нет декларации to_string (C++):

Нет декларации «EOF» в этой области видимости - C++
Это не упражнение, а просто пример задачи, но видимо в нёс есть какая-то ошибка и я хочу узнать какая На всякий пожарный заголовочный...

To_string эквивалент - C++
http://www.cplusplus.com/reference/string/to_string/ это из С++ 11. У меня вс 2010, очевидно стандарт ниже. Из этого кода: ...

'to_string' is not a member of 'std' - C++
результат должен быть таким : &quot;110100100010000100000100000(и т.д.)&quot; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; ...

'to_string' was not declared in this scope - C++
Всем привет. Программируя, столкнулся с надобность перевода int в string. Нашел в интернете, что в библиотеке string, есть функцию...

не находит std::to_string - C++
Не пойму что не так, выдает ошибку Версия gcc 4.7.2-5 #include &lt;iostream&gt; #include &lt;string&gt; int main(void) { for...

Не работает std::to_string(); - C++
Не работает std::to_string(); -std=c++11 gcc --version =&gt; gcc 5.3.0 Как заставить работать?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
23.03.2013, 14:29 #2
У тебя нет функции to_string
0
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
23.03.2013, 14:38  [ТС] #3
Цитата Сообщение от sovaz1997 Посмотреть сообщение
У тебя нет функции to_string
А если одеть очки?

Может синтаксис не тот? Вернуть нужно интовое значение в стринг. ф-ю, без неё же не вернет...
Был вариант с strcmp, тоже не видело...
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
23.03.2013, 14:43 #4
Satansoft, она не описана, не объявлена, но используется.
0
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
23.03.2013, 14:45 #5
Satansoft, да, синтаксис не тот. Ты обращаешься к ф-ии в своей программе. Ее дам нет)
0
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
23.03.2013, 14:49  [ТС] #6
Разве она не библиотечная? как тогда?
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
23.03.2013, 14:53 #7
C++
1
2
3
4
5
6
7
8
9
10
#include <sstream>
...  
else
    {
         std::string buf; 
         std::stringstream ss; 
         ss << str1.size(); 
         ss >> buf; 
         return buf;
    }
1
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.03.2013, 14:58 #8
Цитата Сообщение от Satansoft Посмотреть сообщение
Разве она не библиотечная?
C++11.
0
-=ЮрА=-
Заблокирован
Автор FAQ
23.03.2013, 15:13 #9
Satansoft, лови
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
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
 
template <class T>
string to_string(T param)
{
    string str_ret;
    stringstream ss;
    ss<<param;
    getline(ss, str_ret);
    return str_ret;
}
 
string strr(string str1, string str2="hello")
{
    string str_ret;
    if(strcmp(str1.c_str(), "hello") == 0)
        str_ret = str1.size() < str2.size() ? str2 : str1;
    else
        str_ret = to_string(str1.size());
    return str_ret;
}
 
int main ()
{
    cout<<strr("garrr")<<endl;
    return 0;
}
Проверка http://codepad.org/WadE1Pi7
PS:C++11 поддерживается не всеми компиляторами, to_string функция С++11 потому прежде чем её юзать надо поглядеть а поддерживает ли компилятор С++11. Если не поддерживает - пишем функцию сами(там 4-ри строки можно и написать руками)
1
Миниатюры
нет декларации to_string  
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
23.03.2013, 15:27  [ТС] #10
Хьюстон, принято.
0
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
23.03.2013, 15:28 #11
Это шаблоны
0
-=ЮрА=-
Заблокирован
Автор FAQ
23.03.2013, 15:37 #12
Цитата Сообщение от Satansoft Посмотреть сообщение
Офигеть бубны, а чет эт такое?
Цитата Сообщение от Satansoft Посмотреть сообщение
template <class T>
string to_string(T param)
- эти каракули означают, что в функцию можем передавать любой параметр хоть дабл хоть стринг templatе - означает шаблон, у меня в коде использована функция-шаблон (она будет применять одно и то же действие к данным разных типов - как раз видим преимущества ООП мы пишем код который одинаково может быть использован для всего)
идём далее

Добавлено через 3 минуты
Цитата Сообщение от Satansoft Посмотреть сообщение
stringstream ss;
- ну и что страшного в стринг потоке, хорошо
fstream fs ясно что это?(поток связанный с файлом), ну а вот stringstream такое же поток только связанный со строкой, т.е мы черпаем данные не из файла а из текстового блока. Зачем его использовал да просто потому что
для данного потока оператор помещения в поток << перегружен для всех известных типов и не важно будет наш
Цитата Сообщение от Satansoft Посмотреть сообщение
ss<<param;
строкой или числом, при добавлении в поток param преобразуется в строковый эквивалент и при извлечении из потока нам будет возвращаться уже его строковое представление

Добавлено через 1 минуту
Фактически stringstream делает за нас всю черновую работу, он узнаёт тип данных, сам преобразует и нам лишь остаётся эти данные подобрать, что я бллагополучно и делаю посредством
Цитата Сообщение от Satansoft Посмотреть сообщение
getline(ss, str_ret);
Добавлено через 1 минуту

Не по теме:

Satansoft, ещё вопросы по коду есть?

1
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
23.03.2013, 15:47 #13
Самодельные велосипеды - это конечно хорошо (точнее хорошо уметь их делать), но не проще ли С++11 использовать?
0
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
23.03.2013, 17:38  [ТС] #14
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Satansoft, ещё вопросы по коду есть?
Нет, остальной код ясен, благодарности.
Цитата Сообщение от Kastaneda Посмотреть сообщение
Самодельные велосипеды - это конечно хорошо (точнее хорошо уметь их делать), но не проще ли С++11 использовать?
попытка заюзать 11 стандарт успехом не увенчалась, есть советы по компиляторам?
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
23.03.2013, 17:51 #15
Satansoft, Смотря какой компилятор, в любом компиляторе, поддерживающем его можно включить его опцией -std=c++0x или -std=c++11. Как включать - зависит от компилятора/IDE.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2013, 17:51
Привет! Вот еще темы с ответами:

'to_string' was not declared in this scope - C++
Использую QT 5 тоесть не видет ету функцию, стрінг подключил, что делать??

Количество знаков после точки в to_string - C++
double t1=24.44; double t2=34.44; string line=&quot;&quot;; line=line+std::to_string(t1)+&quot; &quot;+std::to_string(t2); std::cout &lt;&lt; line; ...

Error C2668: std::to_string: неоднозначный вызов перегруженной функции - C++
вот код #include &quot;stdafx.h&quot; #include &lt;Windows.h&gt; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int...

Декларации - C++
Подскажите пожалуйста, что такое &quot;декларации&quot;?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.03.2013, 17:51
Ответ Создать тему
Опции темы

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