Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.86
крольчиха
1 / 1 / 0
Регистрация: 21.01.2010
Сообщений: 19
#1

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

26.01.2011, 19:22. Просмотров 3846. Ответов 13
Метки нет (Все метки)

Добрый день. Может кто сталкивался. Я хотела перевести строку в long long с помощью функции atoll. При компиляции выдается ошибка error C3861: atoll идентификатор не найден.
stdlib.h подключено. Версия VisualC++ 2008 экспресс версия.
http://www.cyberforum.ru/cpp-beginners/thread1080350.html
atoi работает. Но моя строка больше диапазона.

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

Перевод из строки в число
Каким способом можно перевести строчку типа "System::String ^" в тип double?

Перевод строки в число
У меня по заданию нужно в строку ввести числа через пробелы а потом убрать...

Перевод строки в число
Помогите пожалуйста. Требуется перевести строку типа string в число типа long...

Перевод строки в число
Задание таково: нужно создать функцию, которая переводит строку из чисел типа...

Перевод из строки в число
Извиняюсь, если такая тема уже была. Есть строка s. В ней записано 2...

13
alexcoder
1557 / 702 / 145
Регистрация: 03.06.2009
Сообщений: 4,029
Завершенные тесты: 1
26.01.2011, 20:34 #2
я бы посоветовал использовать тип __int64 и функцию _atoi64
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
27.01.2011, 07:06 #3
long long - это C99
atoll() - это C99

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

Цитата Сообщение от accept Посмотреть сообщение
возможно long long появился в C++, тогда надо поискать и функцию
если же long long нет, то и функции быть не должно
Почему ж long long есть. Программка на С компилирую просто в VisualC++ 2008 экспресс.
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
27.01.2011, 08:22 #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 / 1 / 0
Регистрация: 21.01.2010
Сообщений: 19
28.01.2011, 09:48  [ТС] #6
Цитата Сообщение от accept Посмотреть сообщение
даже если она компилирует .c, то это C89, а в нём нет long long
Мне не ругался компилятор на объявление long long.
printf("%d\n", sizeof(long long)); Сделала 8.
Наверно скорее дело в том, что версия экспресс. Видимо урезанная. Навряд ли в VisualC++ 2008 использовался стандарт 1989 года.
За ссылку спасибо буду из самовара в чайника повышаться. Но на работе нельзя использовать другие компиляторы.
0
Nameless One
Эксперт С++
5785 / 3434 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
28.01.2011, 09:53 #7
крольчиха, студия никак не связана со стандартом языка С
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
28.01.2011, 11:36 #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, потому тебе и пишут, что такой-то функции нет, типа "делай, что хочешь"
2
крольчиха
1 / 1 / 0
Регистрация: 21.01.2010
Сообщений: 19
28.01.2011, 14:48  [ТС] #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, потому тебе и пишут, что такой-то функции нет, типа "делай, что хочешь"
Из всего выше сказанного следует, что си -шные программы лучше компилировать в компиляторе для си, а не С++.
Аргумент для тех, кто против смешивания двух языков.
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
29.01.2011, 10:10 #10
ты можешь писать в стандарте C89, но тогда тебе его нужно знать
это дело будет компилироваться любым компилятором для C++, надо будет только включения переделать из #include <stdio.h> в #include <cstdio>, потому что сишные заголовки в C++ числятся в виде таких вот

что-то смотрю сейчас в черновике C++ N3126 и там вроде можно сделать так:
C++
1
2
3
#include <cstdlib>
...
    long long n = atoll("1");
и тип описан, и функция есть, попробуй, может получится
1
крольчиха
1 / 1 / 0
Регистрация: 21.01.2010
Сообщений: 19
29.01.2011, 10:24  [ТС] #11
accept, в понедельник попробую . )))
#include <stdio.h> в #include <cstdio> я честно говоря использую первые вид. Компилируется все нормально. Но посмотрим.
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
30.01.2011, 06:25 #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++ история стандартов
0
крольчиха
1 / 1 / 0
Регистрация: 21.01.2010
Сообщений: 19
01.02.2011, 15:12  [ТС] #13
accept Не хочет.
Перевод символьной строки в число функцией atoll
Но в принципе ладно. Я вроде разберусь с этим. Про стандарты прочитала. Раньше вообще на это внимание не обращала. Почему-то тупо думала, что все что есть в С обязательно С++.
Но все равно всем спасибо, что откликнулись.
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
02.02.2011, 03:43 #14
Цитата Сообщение от крольчиха
что все что есть в С обязательно С++
многие смешивают, бывает ещё хуже, смешивают не просто разные языки, а смешивают языки с компиляторами, тогда как компиляторы являются различными представлениями одного и того же (не могут нарушать стандарт), conio.h часто причисляют к C
0
02.02.2011, 03:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2011, 03:43
Привет! Вот еще темы с решениями:

Перевод из строки в число
Снова я =) Работаю над калькулятором. С функцией ввода разобрался. Значит есть...

Перевод из строки в число
Подскажите в чем ошибка. Метод должен принимать строку в виде $456 654 456.36 ...

Перевод строки в число
Задание состоит в том, что нужно строку перевести в математическое выражение....

Правильный перевод строки в число
Задача: дан файл,компоненты которого являются числами (все числа записаны через...


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

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

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