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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Metal_666_
15 / 15 / 2
Регистрация: 19.10.2009
Сообщений: 187
31.03.2010, 00:32     Конвертация строки в число #1
Стыдно конечно, но вот уже пол года изучаю с++ и только сейчас заметил что при данном коде
C++
1
2
3
4
5
6
7
8
9
10
#include <windows.h>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
    char ch[] = "234:1:9845";
    cout<<atoi(&ch[0]);
    system("pause");
    return 0;
}
Выводится 234, если &ch[6] то выведет 9845. Собственно почему так, просветите?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
31.03.2010, 00:34     Конвертация строки в число #2
потому что &ch[6] это адрес строки "9845".
Metal_666_
15 / 15 / 2
Регистрация: 19.10.2009
Сообщений: 187
31.03.2010, 00:40  [ТС]     Конвертация строки в число #3
Т.е. получается что &ch[n] это строка с n-го до первого элемента не являющегося цифрой?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
31.03.2010, 01:06     Конвертация строки в число #4
Цитата Сообщение от Metal_666_ Посмотреть сообщение
Т.е. получается что &ch[n] это строка с n-го до первого элемента не являющегося цифрой?
Да. Вот простой пример реализации atoi() /при переполнении возвращает бессмысленное значение, но суть не в этом/
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* int atoi(const char*) принимает указатель на строку, содержащую целое число возвращает число */
int atoi(const char* s){
    int sign = 1;
    int value = 0;
 
    while ( isspace(*s) )
        ++s;
    if ( *s == '+' )
        ++s;
    if ( *s == '-' ){
        sign = -1;
        ++s;
    }
    while ( isdigit(*s) )
        value = value * 10 + *s++ - '0';
 
    return value * sign;
}
Metal_666_
15 / 15 / 2
Регистрация: 19.10.2009
Сообщений: 187
31.03.2010, 04:06  [ТС]     Конвертация строки в число #5
Спасибо большое!
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
31.03.2010, 10:47     Конвертация строки в число #6
Цитата Сообщение от Metal_666_ Посмотреть сообщение
Т.е. получается что &ch[n] это строка с n-го до первого элемента не являющегося цифрой?
Нет. Это строка с ch[n] элемента до символа конца строки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2010, 11:14     Конвертация строки в число
Еще ссылки по теме:

Конвертация строки в массив символов C++
C++ Конвертация wchar_t в число целого типа. Обработка исключения
C++ В динамической матрице целых чисел добавить строки после строки, содержащей простое число

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
31.03.2010, 11:14     Конвертация строки в число #7
Цитата Сообщение от Vourhey Посмотреть сообщение
Это строка с ch[n] элемента до символа конца строки.
По-моему всё-таки правильнее "до первого элемента не являющегося цифрой". Если передать строку "123Ы45", atoi() вернёт 123
Yandex
Объявления
31.03.2010, 11:14     Конвертация строки в число
Ответ Создать тему
Опции темы

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