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

Как заменить функции strset и atoi? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Versus12243
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 15
Завершенные тесты: 1
09.11.2010, 19:42     Как заменить функции strset и atoi? #1
Пожалуйста без приколов, мне реально интересно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2010, 19:42     Как заменить функции strset и atoi?
Посмотрите здесь:

atoi C++
Функции atoi и atof C++
C++ функции atoi и itoa
C++ Builder В функции вычисления не работает функция atoi
Как заменить функции при выполнение в Debag или Releas C++ Builder
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
09.11.2010, 19:58     Как заменить функции strset и atoi? #2
Versus12243, atoi через stringstream.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <sstream>
#include <iostream>
#include <string>
 
int main()
{
    std::string Str="100500";
    int numb;
    std::istringstream ist(Str);
    ist>>numb;
    std::cout<<numb<<'\n';
    return 0;
}
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
10.11.2010, 08:45     Как заменить функции strset и atoi? #3
Versus12243, boost::lexical_cast
C++
1
2
3
4
5
#include <boost/lexical_cast.hpp>
 
// ...
int n = boost::lexical_cast<int>("123"); // n == 123
// ...
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
10.11.2010, 10:10     Как заменить функции strset и atoi? #4
Ну и sprintf
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main()
{
    int num = 42;
    char buf[80];
    sprintf(buf, "%d", num);
    printf("%s\n", buf);
    return 0;
}
Добавлено через 3 минуты
Насчет strset:
C
1
2
3
4
5
6
7
char my_strset(char* string, int c)
{
    char* p = string;
    while(*p)
        *p++ = (char) c;
    return string;
}
Versus12243
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 15
Завершенные тесты: 1
11.11.2010, 21:52  [ТС]     Как заменить функции strset и atoi? #5
Цитата Сообщение от ForEveR Посмотреть сообщение
Versus12243, atoi через stringstream.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <sstream>
#include <iostream>
#include <string>
 
int main()
{
    std::string Str="100500";
    int numb;
    std::istringstream ist(Str);
    ist>>numb;
    std::cout<<numb<<'\n';
    return 0;
}
Извини за беспокойство, спасибо за помощь. Но я совсем не врубаюсь как эта прога работает. Я заменил string Str="100500"; на char, потому что работаю в Dev c++, а он string как команду не воспринимает. Как ты заметил в проге я ноль, обьясни, если не сложно, эту прогу и может посоветуеш как быть с описаной проблемой.
P. S. извини что так много накатал, но реально надо учить прогу я ж студент ДНУ.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
11.11.2010, 22:02     Как заменить функции strset и atoi? #6
Versus12243, с char таким способом не потащит вроде.

Добавлено через 56 секунд
Ошибся. Вполне себе работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <sstream>
#include <iostream>
 
int main()
{
    char Str[]="100500";
    int numb;
    std::istringstream ist(Str);
    ist>>numb;
    std::cout<<numb<<'\n';
    return 0;
}
И так тоже.

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <sstream>
#include <iostream>
 
int main()
{
    const char* Str="100500";
    int numb;
    std::istringstream ist(Str);
    ist>>numb;
    std::cout<<numb<<'\n';
    return 0;
}
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
12.11.2010, 00:10     Как заменить функции strset и atoi? #7
C
1
2
3
4
5
6
7
8
int MyAtoi (char *s)
{ int r =0; 
    for(;*s!='\0';s++) {
       if (*s<'0' || *s>'9') break;
       r = 10*r + *s-'0';
    }  
    return(r)
}
Ну еще нужно пропустить начальные пробелы и проанализировать знак
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2010, 00:33     Как заменить функции strset и atoi?
Еще ссылки по теме:

Функции itoa и atoi: что это такое и с чем их едят? C++
Как работает atoi C++
Напишите функцию atoi (), которая получает строку цифр, и возвращает соответствующее int. Например, atoi ("123 C++

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

Или воспользуйтесь поиском по форуму:
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1330 / 863 / 50
Регистрация: 02.01.2009
Сообщений: 2,621
Записей в блоге: 1
12.11.2010, 00:33     Как заменить функции strset и atoi? #8
На счет atoi можно немного загнать =))
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 __stdcall m_atoi(const char *str){
    __asm
    {
        xor ebx, ebx
        xor eax, eax
 
        mov esi, str
    run:
        lodsb 
        or al, al
        jz next
        and eax, 0Fh
        lea ebx, [ebx + ebx * 4]
        lea ebx, [eax + ebx * 2]
        jmp run
    next:
        mov eax, ebx
    }
}
int main(){
 
    int a = m_atoi("123456");
 
    std::cout << a << std::endl;
    return 0;
}
Использовать не рекомендую т. к. верил отладчику и результату..
Yandex
Объявления
12.11.2010, 00:33     Как заменить функции strset и atoi?
Ответ Создать тему
Опции темы

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