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

Перевод символьной строки в число функцией atoll - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.86
крольчиха
 Аватар для крольчиха
1 / 1 / 0
Регистрация: 21.01.2010
Сообщений: 19
26.01.2011, 19:22     Перевод символьной строки в число функцией atoll #1
Добрый день. Может кто сталкивался. Я хотела перевести строку в long long с помощью функции atoll. При компиляции выдается ошибка error C3861: atoll идентификатор не найден.
stdlib.h подключено. Версия VisualC++ 2008 экспресс версия.
atoi работает. Но моя строка больше диапазона.

Добавлено через 9 часов 33 минуты
Я может вопрос не так задала. Либо вообще не задала. В этой версии VisualC++ 2008 экспресс нет этой функции? Самой надо писать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2011, 19:22     Перевод символьной строки в число функцией atoll
Посмотрите здесь:

C++ Перевод из строки в число
C++ Перевод из строки в число
Правильный перевод строки в число C++
Перевод строки в число C++
C++ Перевод строки в число
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexcoder
1438 / 652 / 86
Регистрация: 03.06.2009
Сообщений: 3,284
Завершенные тесты: 1
26.01.2011, 20:34     Перевод символьной строки в число функцией atoll #2
я бы посоветовал использовать тип __int64 и функцию _atoi64
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
27.01.2011, 07:06     Перевод символьной строки в число функцией atoll #3
long long - это C99
atoll() - это C99

возможно long long появился в C++, тогда надо поискать и функцию
если же long long нет, то и функции быть не должно
крольчиха
 Аватар для крольчиха
1 / 1 / 0
Регистрация: 21.01.2010
Сообщений: 19
27.01.2011, 07:29  [ТС]     Перевод символьной строки в число функцией atoll #4
Цитата Сообщение от alexcoder Посмотреть сообщение
я бы посоветовал использовать тип __int64
А это что за тип? Для 64 разрядной системы? У меня 32.

Цитата Сообщение от accept Посмотреть сообщение
возможно long long появился в C++, тогда надо поискать и функцию
если же long long нет, то и функции быть не должно
Почему ж long long есть. Программка на С компилирую просто в VisualC++ 2008 экспресс.
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
27.01.2011, 08:22     Перевод символьной строки в число функцией atoll #5
Цитата Сообщение от крольчиха
Программка на С компилирую просто в VisualC++ 2008 экспресс.
ну она же компилирует .cpp вроде, а .cpp - это C++
даже если она компилирует .c, то это C89, а в нём нет long long
а вот в C99 есть и long long, и функции для работы с ним (а это противоречит сообщению твоей среды)

Цитата Сообщение от крольчиха
atoi работает
потому что она есть в C89

так что сделай printf("%d\n", sizeof(long long));

вот тут есть
long long Equivalent to __int64.
короче это расширение компилятора
а расширение компилятора значит, что программу можно будет собрать только этим компилятором, в других может просто не оказаться таких же расширений, а может быть ещё хуже - в них может оказаться то же самое, но оно не будет обязано работать точно так же
крольчиха
 Аватар для крольчиха
1 / 1 / 0
Регистрация: 21.01.2010
Сообщений: 19
28.01.2011, 09:48  [ТС]     Перевод символьной строки в число функцией atoll #6
Цитата Сообщение от accept Посмотреть сообщение
даже если она компилирует .c, то это C89, а в нём нет long long
Мне не ругался компилятор на объявление long long.
printf("%d\n", sizeof(long long)); Сделала 8.
Наверно скорее дело в том, что версия экспресс. Видимо урезанная. Навряд ли в VisualC++ 2008 использовался стандарт 1989 года.
За ссылку спасибо буду из самовара в чайника повышаться. Но на работе нельзя использовать другие компиляторы.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
28.01.2011, 09:53     Перевод символьной строки в число функцией atoll #7
крольчиха, студия никак не связана со стандартом языка С
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
28.01.2011, 11:36     Перевод символьной строки в число функцией atoll #8
Цитата Сообщение от крольчиха
Навряд ли в VisualC++ 2008 использовался стандарт 1989 года.
C89 является подмножеством C++ (полностью входит в него), а C99 не является подмножеством С++ (поэтому в C++ нет функций из C99)

C и C++ - это разные языки

long long int появился в C99, его нет в C89, и в C++ он вроде бы появится или уже появился в только что вышедшем стандарте С++0x
VisualC++ 2008 естественно не знает нового стандарта C++, поэтому long long int в ней - это просто расширение, потому что в C++ нет такого типа
А C99 она не знает, потому что они не сочли нужным делать компилятор для C, потому тебе и пишут, что такой-то функции нет, типа "делай, что хочешь"
крольчиха
 Аватар для крольчиха
1 / 1 / 0
Регистрация: 21.01.2010
Сообщений: 19
28.01.2011, 14:48  [ТС]     Перевод символьной строки в число функцией atoll #9
accept
Цитата Сообщение от accept Посмотреть сообщение
C89 является подмножеством C++ (полностью входит в него), а C99 не является подмножеством С++ (поэтому в C++ нет функций из C99)
C и C++ - это разные языки
long long int появился в C99, его нет в C89, и в C++ он вроде бы появится или уже появился в только что вышедшем стандарте С++0x
VisualC++ 2008 естественно не знает нового стандарта C++, поэтому long long int в ней - это просто расширение, потому что в C++ нет такого типа
А C99 она не знает, потому что они не сочли нужным делать компилятор для C, потому тебе и пишут, что такой-то функции нет, типа "делай, что хочешь"
Из всего выше сказанного следует, что си -шные программы лучше компилировать в компиляторе для си, а не С++.
Аргумент для тех, кто против смешивания двух языков.
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
29.01.2011, 10:10     Перевод символьной строки в число функцией atoll #10
ты можешь писать в стандарте C89, но тогда тебе его нужно знать
это дело будет компилироваться любым компилятором для C++, надо будет только включения переделать из #include <stdio.h> в #include <cstdio>, потому что сишные заголовки в C++ числятся в виде таких вот

что-то смотрю сейчас в черновике C++ N3126 и там вроде можно сделать так:
C++
1
2
3
#include <cstdlib>
...
    long long n = atoll("1");
и тип описан, и функция есть, попробуй, может получится
крольчиха
 Аватар для крольчиха
1 / 1 / 0
Регистрация: 21.01.2010
Сообщений: 19
29.01.2011, 10:24  [ТС]     Перевод символьной строки в число функцией atoll #11
accept, в понедельник попробую . )))
#include <stdio.h> в #include <cstdio> я честно говоря использую первые вид. Компилируется все нормально. Но посмотрим.
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
30.01.2011, 06:25     Перевод символьной строки в число функцией atoll #12
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main(void)
{
    long long n = atoll("11111111111111111111111");
    cout << n << endl;
    return 0;
}
Код
[guest@localhost tests]$ g++ -Wall t.cpp -o t
[guest@localhost tests]$ ./t
9223372036854775807
[guest@localhost tests]$ g++ -Wall -pedantic t.cpp -o t
t.cpp: In function ‘int main()’:
t.cpp:9: предупреждение: ISO C++ 1998 does not support ‘long long’
[guest@localhost tests]$
вот, видишь
wiki. C++ история стандартов
крольчиха
 Аватар для крольчиха
1 / 1 / 0
Регистрация: 21.01.2010
Сообщений: 19
01.02.2011, 15:12  [ТС]     Перевод символьной строки в число функцией atoll #13
accept Не хочет.
Перевод символьной строки в число функцией atoll
Но в принципе ладно. Я вроде разберусь с этим. Про стандарты прочитала. Раньше вообще на это внимание не обращала. Почему-то тупо думала, что все что есть в С обязательно С++.
Но все равно всем спасибо, что откликнулись.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2011, 03:43     Перевод символьной строки в число функцией atoll
Еще ссылки по теме:

C++ Перевод из строки в число
Перевод из строки в число C++
C++ Перевод символьной строки в массив вещественных чисел

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

Или воспользуйтесь поиском по форуму:
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
02.02.2011, 03:43     Перевод символьной строки в число функцией atoll #14
Цитата Сообщение от крольчиха
что все что есть в С обязательно С++
многие смешивают, бывает ещё хуже, смешивают не просто разные языки, а смешивают языки с компиляторами, тогда как компиляторы являются различными представлениями одного и того же (не могут нарушать стандарт), conio.h часто причисляют к C
Yandex
Объявления
02.02.2011, 03:43     Перевод символьной строки в число функцией atoll
Ответ Создать тему
Опции темы

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