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

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

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

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

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

Пожалуйста без приколов, мне реально интересно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2010, 19:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как заменить функции strset и atoi? (C++):

функции atoi и itoa - C++
у меня есть параметр типа unsigned char* , мне нужно его перевести в тип int, добавить к нему какое-то целое число, напрмиер 10, и...

Функции atoi и atof - C++
Здравствуйте, пишу парсер для файла определенного формата (фактически лексический и синтаксический анализаторы), так вот среди данных...

Функции itoa и atoi: что это такое и с чем их едят? - C++
Доброго времени суток! Помогите пожалуйста разобраться в функциях itoa и atoi. Похожие темки читала, но там не было описания этих...

Как работает atoi - C++
Почему bi==22 ??? #include<iostream> #include<cstring> #include <stdio.h> #include <stdlib.h> using namespace std; char*...

Как заменить содержимое case на функции пользователя? - C++
Написал программу для работы с одномерным массивом в котором реализован интерфейс пользователя, а теперь необходимо в разделе...

atoi - C++
short x char chm; ...цикл, присваиваем chm значение... x = atoi (chm); if ( x < 32768) { cout <<...

7
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
09.11.2010, 19:58 #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;
}
1
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
10.11.2010, 08:45 #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
// ...
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
10.11.2010, 10:10 #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;
}
0
Versus12243
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 15
Завершенные тесты: 1
11.11.2010, 21:52  [ТС] #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. извини что так много накатал, но реально надо учить прогу я ж студент ДНУ.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
11.11.2010, 22:02 #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;
}
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
12.11.2010, 00:10 #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)
}
Ну еще нужно пропустить начальные пробелы и проанализировать знак
0
ISergey
Maniac
Эксперт С++
1376 / 887 / 53
Регистрация: 02.01.2009
Сообщений: 2,663
Записей в блоге: 1
12.11.2010, 00:33 #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;
}
Использовать не рекомендую т. к. верил отладчику и результату..
1
12.11.2010, 00:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2010, 00:33
Привет! Вот еще темы с ответами:

atoi() - C++
программа элементарная - надо считать строку &quot;x=int1+int2&quot; где int1 и int2 не известные зарание значения int; надо вывести int1+int2; не...

atof и atoi - C++
Помогите пожалуйста, разобратся что такое atof, atoi, как работает, что делает?

Аналог atoi в С++ - C++
Вопрос возможно глупый, но если кто просветит меня буду очень благодарен)) как в С++ реализован перевод символьной строки(char или...

atoi не работает! - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; using namespace std; int main(){ int K, N, t1_1, t2_2; int p; ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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