С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549

Ошибка в StrToInt

14.09.2014, 11:16. Показов 2272. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, пишу функцию StrToInt, но всегда почему-то возвращает 0, а дебагер не хочет показывать значения переменных в данной функции.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int strtoint(string String) { 
    //reverse(String.begin(), String.end());
    int ret = 0;
    for (unsigned i = 0; i < String.length(); i++)
    {
        char z = String.c_str()[i];
        int q = 0;
        switch (z)
        {
        case '1': q = 1; break;
        case '2': q = 2; break;
        case '3': q = 3; break;
        case '4': q = 4; break;
        case '5': q = 5; break;
        case '6': q = 6; break;
        case '7': q = 7; break;
        case '8': q = 8; break;
        case '9': q = 9; break;
        case '0': q = 0; break;
        }
        int qq = pow(10, String.length() - i - 1);
        q = q * qq;
        ret += q;
    }
    return ret;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.09.2014, 11:16
Ответы с готовыми решениями:

StrToInt ошибка при конвертации
ПОлучаю переменную типа string из текстового файла на сервере обычным GET запросом (idHTTP1.Get('url')); В текстовом файле обычное число и...

StrToInt, IntToHex
Приветствую всех! Не могу понять, как перевести строку в hex. Множество попыток испробовал(может не все), вот одни из них: int...

StrToInt в StringGrid
Подскажите, пожалуйста, как грамотно вынуть введенные в StringGrid значения. Формально как из массива строчек сделать массив чисел. При...

9
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
14.09.2014, 11:29
C++
1
2
3
4
5
6
7
8
9
10
11
12
int strtoint(string String) 
{ 
    int q=0;
    for (unsigned i = 0; i < String.length(); i++)
    {
        char z = String[i];
        int t=z-'0';  // например '2'-'0' равно 2
        q*=10; // сдвигаем q влево
        q +=t; // прилепляем следующий разряд 
    }
    return q;
}
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
14.09.2014, 11:38  [ТС]
Всё-равно 0 возвращает, хотя на входе "80"
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
14.09.2014, 11:46
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Умножать на 0?
Первый раз будет так, а в следующем проходе Умножится на первую цифру.

Добавлено через 3 минуты
Цитата Сообщение от hiphone Посмотреть сообщение
Всё-равно 0 возвращает
Вот полный код, выдает
80
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
using namespace std;
int strtoint(string String) 
{ 
    int q=0;
    for (unsigned i = 0; i < String.length(); i++)
    {
        char z = String[i];
        int t=z-'0';  // например '2'-'0' равно 2
        q*=10; // сдвигаем q влево
        q +=t; // прилепляем следующий разряд 
    }
    return q;
}
 int main()
{
    string a="80";
    int t=strtoint(a);
    cout<<t<<endl;
    system("pause");
    return 0;
}
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
14.09.2014, 11:58  [ТС]
Значит у меня возможно что-то с настройками проекта, потому что какие коды не пробую, либо 0, либо огромное число
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.09.2014, 12:06
Нефиг писать...
Есть
1. Потоки типа std::stringstream;
2. boost::lexical_cast<>()
3. Ну и на худой конец atoi()

Они не заменяю в полной мере функции для преобразования из VCL, но тем не менее подходят в большинстве случаев.
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
14.09.2014, 12:07
Вы именно мой код компилируете?
Если нет, то приведите свой.

Добавлено через 43 секунды
Цитата Сообщение от Avazart Посмотреть сообщение
Нефиг писать...
Задача учебная. Имеет право быть!
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
14.09.2014, 12:09  [ТС]
Да, действитель, изменив кучу настроек - заработало, остально понять из-за какой неработало. Спасибо всем.

Вы именно мой код компилируете?
Если нет, то приведите свой.
И Ваш, и мой заработали
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.09.2014, 12:14
Ну тогда успешно по мучасться:
1. Выбрасывание исключение, если неправильный формат.
2. Конвертация hex типа 0x0abc;
3. Учет показателей степени типа 1e7 итп.
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
14.09.2014, 12:21  [ТС]
Всё, разобрался, такая ошибка возникает только при включённой оптимизации, почему - пока не понятно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.09.2014, 12:21
Помогаю со студенческими работами здесь

IntToStr<>StrToInt
Подскажите, мне, пожалуйста что не так?

StrToInt мистика
Здравствуйте Уважаемые киберфорумцы. Помогайте. Проблема такова в Edit главное выводится нормально (1 например), а при конвертации выдает...

Использование StrToInt
Доброго времени суток Возникла следующая проблема, с которой не получается справиться: в Memo из *.txt файла загружается массив чисел (на...

StrToInt Заменить на StrToReal
Вечер добрый, пишу симплекс таблицу, пришел к ацкой оплошности, значения д.б и с точкой и с отрицательным знаком!!!!)))))))) Начал...

StrToInt / StrToFloat в ListView
Добрый вечер. Вопрос в том, почему StrToInt / StrToFloat в ListView не хотят работать выдавая ошибку &quot;is not valid integer/float...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru