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

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

Войти
Регистрация
Восстановить пароль
 
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
#1

Перевод из String в long long - C++

15.08.2014, 22:19. Просмотров 1327. Ответов 12
Метки нет (Все метки)

Мне нужна функция для перевода из String в long long.Функция atoi(const char* str) работает только с констатным масивом символов а мне нужен именно string(переменный).Сам C++ учу недавно в паскале с этом всё очень просто одна команда,а тут целая непонятная история...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2014, 22:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевод из String в long long (C++):

Не понятный undefined reference to `unsigned long long f<unsigned long long, void> - C++
test.cpp: #include &lt;iostream&gt; template &lt;typename FormalType, typename FactType = typename std::enable_if&lt;std::is_same&lt;FormalType,...

Перевод long double в string - C++
Дана задача http://www.cyberforum.ru/attachment.php?attachmentid=97778&amp;stc=1&amp;d=1317238135 Я не понимаю как конвертировать...

Возведение в степень по модулю для чисел близких к max long long - C++
Даны числа A,B,C&lt;=2^63-1 Надо посчитать A^B mod С. прошу не выкладывать стандартный алгоритм для Int, так как неверный ответ в итоге...

Как char[] перевести в битовую маску long long(64 бита) и наоборот? - C++
Как char перевести в битовую маску long long(64 бита) и наоборот?

Нюансы синтаксиса: что означает запись typedef long long i64 ? - C++
Что означает эта строчка? typedef long long i64; Как я понял, функция typedef позволяет добавить имя типу данных. Но зачем long...

Тип long long и его ввод\вывод с использованием scanf\printf - C++
Добрый день! Мне в программе надо вывести и ввести, соответственно, некоторые данные с помощью scanf и printf. По сути у меня выглядит...

12
John Prick
803 / 736 / 145
Регистрация: 27.07.2012
Сообщений: 2,108
Завершенные тесты: 3
15.08.2014, 22:22 #2
Цитата Сообщение от Ed_Os Посмотреть сообщение
Функция atoi(const char* str) работает только с констатным масивом символов а мне нужен именно string(переменный)
Покажи код, где это у тебя не работает.
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
15.08.2014, 22:25 #3
Цитата Сообщение от Ed_Os Посмотреть сообщение
нужна функция для перевода из String в long long
C++
1
2
3
std::atoll(str.c_str())
std::strtoll(str.c_str(), 0, 10)
std::stoll(str)
0
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
15.08.2014, 22:35  [ТС] #4
Цитата Сообщение от gray_fox Посмотреть сообщение
C++
1
2
3
std::atoll(str.c_str())
std::strtoll(str.c_str(), 0, 10)
std::stoll(str)
Можете розьенить пожалуйста первую строку полностью

Добавлено через 4 минуты
Цитата Сообщение от John Prick Посмотреть сообщение
Покажи код, где это у тебя не работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string s,buffer;
    cin>>s;
    long long begin,end,tbegin,tend;;
    int max_length(0),s_length(s.length());
    for(int val_len=1;val_len<=s_length;val_len++)
     for(int pos=1;pos<=s_length;pos++)
            buffer=s.substr(pos,val_len);               
             tbegin=atoll(buffer);//эта строка
             
      
    system("PAUSE");
    return 0;
}
Это если что недаписаный код в оладочном режиме (вообщем пишу и по строке проверяю)
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
15.08.2014, 22:36 #5
Цитата Сообщение от Ed_Os Посмотреть сообщение
Можете розьенить пожалуйста первую строку полностью
atoll (как и все ato*) принимает char const*. Метод string::c_str возвращает char const*.
0
John Prick
803 / 736 / 145
Регистрация: 27.07.2012
Сообщений: 2,108
Завершенные тесты: 3
15.08.2014, 22:38 #6
C++
1
tbegin=atoll(buffer.c_str());//эта строка
string - это класс. В С++ нет специального типа "строка", есть либо массив символов, либо что-то по-умнее, как например, класс std::string, который ты используешь. Чтобы из него получить массив символов, который как раз и требует функция atoi, atoll и т.д., используется метод c_str().
0
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
15.08.2014, 22:49  [ТС] #7
Цитата Сообщение от John Prick Посмотреть сообщение
string - это класс. В С++ нет специального типа "строка", есть либо массив символов, либо что-то по-умнее, как например, класс std::string, который ты используешь. Чтобы из него получить массив символов, который как раз и требует функция atoi, atoll и т.д., используется метод c_str().
так спасибо в wxDevC++ робит...только вот в Visual C++ 2010 нет ошибка:
c:\users\ed\documents\visual studio 2010\projects\ter\ter\main.cpp(11): error C3861: atoll: идентификатор не найден
Подскажите пожалуйста в чём проблема?
0
John Prick
803 / 736 / 145
Регистрация: 27.07.2012
Сообщений: 2,108
Завершенные тесты: 3
15.08.2014, 22:53 #8
Цитата Сообщение от Ed_Os Посмотреть сообщение
c:\users\ed\documents\visual studio 2010\projects\ter\ter\main.cpp(11): error C3861: atoll: идентификатор не найден
Подскажите пожалуйста в чём проблема?
Не подключил файл с объявлением этой функции. Я не знаю, где она объявлена. Попробуй в начале написать:
C++
1
#include <stdlib.h>
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
15.08.2014, 22:55 #9
Цитата Сообщение от Ed_Os Посмотреть сообщение
только вот в Visual C++ 2010 нет ошибка:
Её там может и не быть, тогда ближайший вариант наверное atol (возвращает long)
0
Ed_Os
0 / 0 / 0
Регистрация: 02.08.2014
Сообщений: 90
15.08.2014, 23:01  [ТС] #10
Последний вопрос...Visual C++ 2010 поддерживает <cstdlib>? Просто как я понял atoll()находится там?
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
15.08.2014, 23:05 #11
Цитата Сообщение от Ed_Os Посмотреть сообщение
Последний вопрос...Visual C++ 2010 поддерживает <cstdlib>? Просто как я понял atoll()находится там?
Да, вот только в стандарт языка atoll добавили относительно недавно, так что в VS она может быть просто не реализована.
0
John Prick
803 / 736 / 145
Регистрация: 27.07.2012
Сообщений: 2,108
Завершенные тесты: 3
15.08.2014, 23:05 #12
Цитата Сообщение от Ed_Os Посмотреть сообщение
Последний вопрос...Visual C++ 2010 поддерживает <cstdlib>?
Ну запустите поиск этого файла в папке со студией. Если есть, значит есть.
0
BlackIce
310 / 172 / 64
Регистрация: 18.01.2014
Сообщений: 387
16.08.2014, 00:42 #13
Цитата Сообщение от Ed_Os Посмотреть сообщение
Visual C++ 2010 поддерживает <cstdlib>?
Да.

Цитата Сообщение от Ed_Os Посмотреть сообщение
Просто как я понял atoll()находится там?
Находится, но начиная с VS2012.

Как вариант:

C++
1
2
3
4
5
6
7
#include <sstream>
...
    std::string str = "1234567890000";
    
    long long val;
    std::istringstream(str) >> val;
...
0
16.08.2014, 00:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2014, 00:42
Привет! Вот еще темы с ответами:

Быстрое вычисление наибольшего общего делителя для unsigned long long int - C++
Даны два числа типа unsigned long long int, в них могут оказаться любые представимые значения, требуется максимально быстро вычислить...

Как преобразовать const char * в long в С++, 0xE0E040BF в long - C++
Помогите пожалуйста преобразовать текст в число на C++ const char * value=cmd; long ircode = atol(value); ...

Подскажите что за типа такой long long int? - C++
Вопрос собственно сверху. Нигде не смог найти описания подобного типа

Работа с unsigned long long int на 32-битных системах - C++
В программе испольуется тип данных unsigned long int, но в некоторых (хотя и очень редких) случаях этого диапазона может быть недостаточно....


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

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

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