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

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

Войти
Регистрация
Восстановить пароль
 
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
#1

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

29.06.2011, 15:57. Просмотров 414. Ответов 12
Метки нет (Все метки)

библиотека string, присваиваю целой переменной элемент строки, а он присваивает кодировку, тобишь если элемент строки '0' то переменная равна 48. Как сделать так чтобы она равнялась 0.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2011, 15:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Конвертация строки в число (C++):

Конвертация строки в число - C++
Стыдно конечно, но вот уже пол года изучаю с++ и только сейчас заметил что при данном коде #include <windows.h> #include <iostream> ...

Конвертация строки в число: реализовать сложение чисел - C++
Привет Форумчане. В общем есть файл который мы успешно открыли в нем находятся в каждой строке по какому то числу, например: 0.64, а так...

Конвертация строки в массив символов - C++
Что тут не так?( getTextFromFile - считывает с файла сроку. Как переконвертировать строку что бы можно было установить в EDIT? string tmp...

Конвертация wchar_t в число целого типа. Обработка исключения - C++
Конвертирую считываемые данные с Экселя в число типа int,для дальнейшей проверки вхождения в массив. buff содержит значение 12345qwe ...

конвертация строки TCHAR в BOOL ? - C++
Получаю параметр в виде строки "TRUE"\"FALSE" из ini, но ни как не получается его преобразовать в нормальный для переменной чекбокса вид....

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
diagon
Higher
1929 / 1195 / 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';
1
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];
}
0
nameless
Эксперт C++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
29.06.2011, 18:54 #4
fenix117, Не совсем Вас понял, вы хотите строку преобразовать в число?
1
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 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;
}
1
nameless
Эксперт C++
334 / 298 / 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;
}
1
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
29.06.2011, 19:12  [ТС] #7
да, строку надо в число преобразовать, но теперь я мало что понял, слабо разбираюсь в программировании, я подключал только #include <iostream>
#include <string> можно только ими обойтись?
0
diagon
Higher
1929 / 1195 / 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;
}
1
nameless
Эксперт C++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
29.06.2011, 19:14 #9
fenix117,
Думаю мой вариант и вариант товарища Maxwe11 вполне должны подойти..
1
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
29.06.2011, 19:48  [ТС] #10
спасибо вам, вся фишка была только в вычитании нуля (-'0'), только не пойму почему это помогло, если транслятор встречает эту запись то присваивает символ иначе ее кодировку чтоли?
0
diagon
Higher
1929 / 1195 / 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.
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
29.06.2011, 19:58 #12
Цитата Сообщение от diagon Посмотреть сообщение
Вариант с самодельной atoi
Может тогда лучше вообще строковые потоки юзать и не париться?))
0
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
29.06.2011, 20:02 #13
Цитата Сообщение от silent_1991 Посмотреть сообщение
Может тогда лучше вообще строковые потоки юзать и не париться?))
Проще, но автору, как я понял, нужно только с помощью <iostream> && <string>
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2011, 20:02
Привет! Вот еще темы с ответами:

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

Массив: Напечатать номер каждой строки, в которой второй элемент меньше среднего арифметического элементов этой строки, и число таких строк. - C++
Дана матрица А(m,n). Напечатать номер каждой строки, в которой второй элемент меньше среднего арифметического элементов этой строки,...

Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число», «положительное нечетное число» и т. д. - C++
Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число», «положительное нечетное число» и т. д. ...

Из строки в число - C++
Как можно преобразовать строку с цифрами в число отдельной функцией, не используя atoi, но пользуясь стандартными библиотеками?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.06.2011, 20:02
Ответ Создать тему
Опции темы

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