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

Конвертация строки в число - C++

Восстановить пароль Регистрация
 
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
29.06.2011, 15:57     Конвертация строки в число #1
библиотека string, присваиваю целой переменной элемент строки, а он присваивает кодировку, тобишь если элемент строки '0' то переменная равна 48. Как сделать так чтобы она равнялась 0.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2011, 15:57     Конвертация строки в число
Посмотрите здесь:

C++ из строки --> Число
C++ Конвертация строки в число
C++ Преобразование строки в число
Из строки в число C++
Конвертация строки в массив символов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
29.06.2011, 15:59     Конвертация строки в число #2
C++
1
2
std::string str("120");
int x = str[2] - '0';
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
29.06.2011, 18:50  [ТС]     Конвертация строки в число #3
Цитата Сообщение от diagon Посмотреть сообщение
C++
1
2
std::string str("120");
int x = str[2] - '0';
с нулем был просто пример, у меня уже есть строка в которой число, как мне это число закинуть в интовскую переменную. Я просто присваивал:
C++
1
2
3
4
5
int a=0;
for (int i=0; i<n; i++)
{
   a=a*10+s1[i];
}
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
29.06.2011, 18:54     Конвертация строки в число #4
fenix117, Не совсем Вас понял, вы хотите строку преобразовать в число?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
29.06.2011, 18:59     Конвертация строки в число #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <sstream>
 
int main() 
{
   std::string str("120");
   std::stringstream ss(str);
   int i;
   ss >> i;
   std::cout << str << '\n' << i;
   return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <boost\lexical_cast.hpp>
 
int main() 
{
   std::string str("120");
   int i = boost::lexical_cast<int>(str);
   std::cout << str << '\n' << i;
   return 0;
}
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
29.06.2011, 19:05     Конвертация строки в число #6
fenix117,

C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
   int num = atoi("120");
   
   printf("%d", num);
   
   return 0;
}
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
29.06.2011, 19:12  [ТС]     Конвертация строки в число #7
да, строку надо в число преобразовать, но теперь я мало что понял, слабо разбираюсь в программировании, я подключал только #include <iostream>
#include <string> можно только ими обойтись?
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
29.06.2011, 19:13     Конвертация строки в число #8
Можно, но придется писать свою реализацию atoi
Не проще ли воспользоватся стандартными функциями?
Вариант с самодельной atoi:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <sstream>
int atoi(std::string buf){
    int res = 0;
    for (size_t i = 0; i <  buf.size(); ++i){
        res *= 10;
        res += buf[i] - '0';
    }
    return res;
}
    
int main(){
    std::string buf("123450");
    int x = atoi(buf);
    std::cout << x;
    return 0;
}
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
29.06.2011, 19:14     Конвертация строки в число #9
fenix117,
Думаю мой вариант и вариант товарища Maxwe11 вполне должны подойти..
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
29.06.2011, 19:48  [ТС]     Конвертация строки в число #10
спасибо вам, вся фишка была только в вычитании нуля (-'0'), только не пойму почему это помогло, если транслятор встречает эту запись то присваивает символ иначе ее кодировку чтоли?
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
29.06.2011, 19:50     Конвертация строки в число #11
Цитата Сообщение от fenix117 Посмотреть сообщение
спасибо вам, вся фишка была только в вычитании нуля (-'0'), только не пойму почему это помогло, если транслятор встречает эту запись то присваивает символ иначе ее кодировку чтоли?
char - это тоже число.
http://asciitable.com/
Т.е. '0' = 48.
Поэтому, к примеру '2' - '0' = 50 - 48 = 2.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
29.06.2011, 19:58     Конвертация строки в число #12
Цитата Сообщение от diagon Посмотреть сообщение
Вариант с самодельной atoi
Может тогда лучше вообще строковые потоки юзать и не париться?))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2011, 20:02     Конвертация строки в число
Еще ссылки по теме:

C++ Конвертация wchar_t в число целого типа. Обработка исключения
Проверка строки на число C++
C++ Преобразование строки в число

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

Или воспользуйтесь поиском по форуму:
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
29.06.2011, 20:02     Конвертация строки в число #13
Цитата Сообщение от silent_1991 Посмотреть сообщение
Может тогда лучше вообще строковые потоки юзать и не париться?))
Проще, но автору, как я понял, нужно только с помощью <iostream> && <string>
Yandex
Объявления
29.06.2011, 20:02     Конвертация строки в число
Ответ Создать тему
Опции темы

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