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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 56, средняя оценка - 4.96
Bars911
0 / 0 / 0
Регистрация: 15.07.2011
Сообщений: 6
#1

Аналог atoi в С++ - C++

15.07.2011, 21:52. Просмотров 8608. Ответов 22
Метки нет (Все метки)

Вопрос возможно глупый, но если кто просветит меня буду очень благодарен))
как в С++ реализован перевод символьной строки(char или string) в int?
только начал изучать С++, знаю что в С за это отвечает atoi,
а вот в С++ ненашел(((
задача просто поставленна так, что использовать функции и библиотеки из С или STL C++ нежелательно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2011, 21:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Аналог atoi в С++ (C++):

atoi - C++
short x char chm; ...цикл, присваиваем chm значение... x = atoi (chm); if ( x < 32768) { cout <<...

atoi() - C++
программа элементарная - надо считать строку "x=int1+int2" где int1 и int2 не известные зарание значения int; надо вывести int1+int2; не...

Atoi, atof. - C++
Подскажите пожалуйста, как с помощью функций atoi, atof, проверить, является ли данное число действительным? Добавлено через 21 минуту...

atof и atoi - C++
Помогите пожалуйста, разобратся что такое atof, atoi, как работает, что делает?

atoi не работает! - C++
#include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; int main(){ int K, N, t1_1, t2_2; int p; ...

Результат atoi - C++
привет необходимо написать функцию, позволяющую проверить является ли содержимое строки, содержащей только цифры и/или знак + или - на...

22
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
15.07.2011, 22:09 #2
Bars911,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <sstream>
#include <iostream>
#include <string>
 
int main()
{
   std::istringstream stream(std::string("123"));
   int number;
   
   stream >> number;
   
   std::cout << number << std::endl;
 
   return 0;
}
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
15.07.2011, 22:38 #3
Реализовывайте сами, это несложно.
Для беззнакового числа
C++
1
2
3
4
5
6
size_t _atoi(const char * str){
   size_t res = 0;
   for (; *str; res += *str++ - '0')
      res *= 10;
   return res;
}
P.S. посты выше и ниже моего используют STL >_<
1
An1ka
65 / 70 / 2
Регистрация: 30.06.2011
Сообщений: 176
15.07.2011, 22:39 #4
Для std::string есть stoi :
C++
1
2
3
std::string s("37");
int i =std::stoi( s);
std::cout << i;
1
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
15.07.2011, 22:52 #5
Цитата Сообщение от An1ka Посмотреть сообщение
Для std::string есть stoi :
В стандарте есть ?
0
alkagolik
Заблокирован
15.07.2011, 22:53 #6
Цитата Сообщение от An1ka Посмотреть сообщение
Для std::string есть stoi :
error: ‘stoi’ is not a member of ‘std’
да и http://www.cplusplus.com тут я ничего подобного не нашел...
вот тут есть, но это вроде как не стандарт http://en.cppreference.com/w/cpp/string/stoi
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
15.07.2011, 23:03 #7
Цитата Сообщение от asics Посмотреть сообщение
В стандарте есть ?
Только в C++0x
1
An1ka
65 / 70 / 2
Регистрация: 30.06.2011
Сообщений: 176
15.07.2011, 23:05 #8
Цитата Сообщение от asics Посмотреть сообщение
В стандарте есть ?
Ну если определена в заголочной библиотеке <string> , то значит есть ?!
0
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
15.07.2011, 23:10 #9
grizlik78, У меня mingw 4.6.0, поддерживает почти все фичи из 0x, компилю:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <algorithm>
#include <string>
 
int main(){
  std::string s("37");
  int i = std::stoi( s);
  std::cout << i;
  return 0;
}
ошибка:
error: 'stoi' is not a member of 'std
'
Добавлено через 23 секунды
Цитата Сообщение от An1ka Посмотреть сообщение
то значит есть ?!
Нет...
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
15.07.2011, 23:14 #10
asics, у меня GCC 4.5.1:
Bash
1
2
3
4
5
6
7
home ~ $ g++ stoi.cpp 
stoi.cpp: In function ‘int main()’:
stoi.cpp:7:11: error: ‘stoi’ is not a member of ‘std’
home ~ $ g++ -std=c++0x stoi.cpp
home ~ $
home ~ $ ./a.out 
37
0
An1ka
65 / 70 / 2
Регистрация: 30.06.2011
Сообщений: 176
15.07.2011, 23:15 #11
Цитата Сообщение от asics Посмотреть сообщение
grizlik78, У меня mingw 4.6.0, поддерживает почти все фичи из 0x, компилю:
Значит не всё у вас поддерживается
У меня MS Visual C++ 2010 и всё нормально
Если интересно, то вот как она описана:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 #if _HAS_CPP0X
inline int stoi(const string& _Str, size_t *_Idx = 0,
int _Base = 10)
{   // convert string to int
const char *_Ptr = _Str.c_str();
char *_Eptr;
int _Errno = 0;
long _Ans = _CSTD _Stolx(_Ptr, &_Eptr, _Base, &_Errno);
if (_Ptr == _Eptr)
    _Xinvalid_argument("invalid stoi argument");
if (_Errno || _Ans < INT_MIN != INT_MAX < _Ans)
    _Xout_of_range("stoi argument out of range");
if (_Idx != 0)
    *_Idx = (size_t)(_Eptr - _Ptr);
return ((int)_Ans);
}
0
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
15.07.2011, 23:16 #12
grizlik78, Компилю всегда з -std=c++0x, ошибка осталась.
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
15.07.2011, 23:21 #13
Ну, если кто знает где взять Final Draft C++0x, то можно посмотреть. В драфте от 2008 года эти функции есть, в моей реализации GCC тоже. Разве что под конец выкинули, но вряд ли.
0
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
15.07.2011, 23:22 #14
Странно, она есть в basic_string.h
C++
1
2
3
4
inline int
  stoi(const string& __str, size_t* __idx = 0, int __base = 10)
  { return __gnu_cxx::__stoa<long, int>(&std::strtol, "stoi", __str.c_str(),
                    __idx, __base); }
, но почему-то коипилятор ее не видит.
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
15.07.2011, 23:31 #15
В n3242.pdf от 28.02.2011 (можно найти в википедии) тоже есть, в разделе 21.5 Numeric conversions
0
15.07.2011, 23:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2011, 23:31
Привет! Вот еще темы с ответами:

функция atoi - C++
Функции атои по идее должна превращать строку в число, но почему то я не могу заставить ее работать коректно, в чем ошибка? #include...

Проскользывает функция atoi - C++
Дана строка, в ней через пробелы расположены числа. Вывести эти числа в порядке возрастания. Вот код, но проблема в том, что на копировании...

Не работает функция atoi - C++
Здравствуйте! Прошу помочь. Даю код программы, что не так с функцией atoi ? Программа рисует кривую Гильберта, i - порядок кривой, мне...

Функции atoi и atof - C++
Здравствуйте, пишу парсер для файла определенного формата (фактически лексический и синтаксический анализаторы), так вот среди данных...


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

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

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