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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Versus12243
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 15
Завершенные тесты: 1
#1

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

09.11.2010, 19:42. Просмотров 1664. Ответов 7
Метки нет (Все метки)

Пожалуйста без приколов, мне реально интересно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2010, 19:42     Как заменить функции strset и atoi?
Посмотрите здесь:

C++ Atoi, atof.
C++ atof и atoi
atoi() C++
atoi C++
C++ Аналог atoi в С++
Функции atoi и atof C++
C++ функция atoi
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 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
2297 / 1667 / 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
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
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
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 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
1152 / 957 / 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?
Еще ссылки по теме:

C++ функции atoi и itoa
Результат atoi C++
C++ atoi не работает!
Функции itoa и atoi: что это такое и с чем их едят? C++
Как работает atoi C++

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

Или воспользуйтесь поиском по форуму:
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 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?
Ответ Создать тему
Опции темы

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