Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 5
1

Перевод строки в ASCII символы

26.11.2017, 17:32. Просмотров 3474. Ответов 8
Метки нет (Все метки)

Привет всем!
Прошу помочь кое что выяснить.
Есть ли в С++ функция перевода строки в символы ASCII таблицы?
Если все же такой нет, прошу помочь написать её.
К примеру такая строка
char str[]="4142435a"

даст на выходе:

ABCZ
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2017, 17:32
Ответы с готовыми решениями:

Вывести на экран символы строки по возрастанию их кода ASCII
2) После ввода с клавиатуры произвольного ряда, вывести на экран этот ряд с отсортированными в нем...

Перевод десятичных кодов в символы ASCII
Вывести на экран заданный интервал(задается двумя числами - границами интервала, нужна проверка...

Из заданной строки исключить все символы, входящие в нее более одного раза (ASCII-Z строки)
Здравствуйте! Есть проблемы с выполнением задания: Из заданной строки исключить все символы,...

Как удалить ASCII символы из строки
Есть строка, из нее нужно удалить ASCII символы, подскажите как это сделать?

8
6909 / 5974 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
26.11.2017, 17:43 2
Нет такой функции. Выделяй подстроки по два символа, преобразуй в число и после сохраняй в char.
0
1458 / 924 / 807
Регистрация: 30.04.2016
Сообщений: 3,184
26.11.2017, 18:19 3
demon55303, здравствуйте! Вам нужны все символы таблицы ASCII?
0
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 5
26.11.2017, 18:21  [ТС] 4
Да, все 256
0
136 / 122 / 42
Регистрация: 15.02.2010
Сообщений: 681
26.11.2017, 19:11 5
Введите цифровую строку, длиной, кратной трём, и будет Вам счастье.
Например, Hello! будет иметь такой ASCII-код: 072101108108111033, а Привет! - такой 207240232226229242033 в кодировке Windows 1251.
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
27
28
29
30
31
32
33
34
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    setlocale(0, "");
    string s;
    cin >> s;
    int len = s.length();
    
//если в строке не только цифры, или если количество символов не кратно трём
    int n;
    for (n = 0; n < len; n++)
        if (s[n] < 48 || s[n]>57)
            break;
    if (n < len || len % 3 != 0)
    {
        cout << "не корректный ввод";
        return 0;
    }
 
 
    //читаем по три цифры и выводим символ, соответствующий ASCII-коду
    unsigned char c;
    for (int i = 0; i < len; i += 3)
    {
        c = (s[i]-48) * 100 + (s[i+1]-48) * 10 + s[i+2]-48;
        cout << c;
    }
 
    cout << endl;
    return 0;
}
0
0 / 0 / 0
Регистрация: 26.11.2017
Сообщений: 5
26.11.2017, 19:30  [ТС] 6
LVV, Извините, я некорректно выразился: Строка должна быть записана в 16ой системе(Hex), а на выходе получаться символы ASCII
0
1030 / 781 / 369
Регистрация: 30.10.2017
Сообщений: 2,233
26.11.2017, 20:20 7
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
27
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdlib.h>
 
char *hexToStr(char *str)
{
    char temp[100] = "", temp2[3], *stopstring;
 
    for (int i = 0; i < strlen(str) - 1; i += 2)
    {
        strncpy(temp2, str + i, 2);
        temp[i / 2] = (char) strtol(temp2, &stopstring, 16);
        temp[i / 2 + 1] = '\0';
    }
 
    return temp;
}
 
int main()
{
    char str[] = "4142435a";
 
    std::cout << hexToStr(str) << std::endl;
 
    system("pause");
    return 0;
}
1
1179 / 700 / 164
Регистрация: 05.12.2015
Сообщений: 2,020
27.11.2017, 02:01 8
QuakerRUS, советовать новичкам возвращать из функции указатель на локальную переменную... это за гранью добрв и зла.
3
1030 / 781 / 369
Регистрация: 30.10.2017
Сообщений: 2,233
27.11.2017, 10:29 9
Лучший ответ Сообщение было отмечено demon55303 как решение

Решение

avgoor, да, вы правы, мой косяк. Почему то на VS2017 этот код у меня прошел без проблем, а на Watcom C++ попробовал сейчас, не работает.

Рабочий вариант.

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
27
28
29
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdlib.h>
 
char *hexToStr(char *temp, char *str)
{
    char temp2[3], *stopstring;
 
    temp[0] = '\0';
 
    for (int i = 0; i < strlen(str) - 1; i += 2)
    {
        strncpy(temp2, str + i, 2);
        temp[i / 2] = (char)strtol(temp2, &stopstring, 16);
        temp[i / 2 + 1] = '\0';
    }
    
    return temp;
}
 
int main()
{
    char str[] = "4142435a", temp[100];
 
    std::cout << hexToStr(temp, str) << std::endl;
 
    system("pause");
    return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2017, 10:29

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Удалить из строки символы с минимальным и максимальными ASCII-кодом.
Удалить из строки символы с минимальным и максимальными ASCII-кодом. Исходные данные вести с...

Перевод строки в двоичный код. Кодировка ASCII
Вводится строка, выводится двоичный код. Вход: &quot;pascal .&quot; Выход:...

Из форматной строки и символа требуется получать все ASCII символы
Есть &quot;{0}&quot;,(char)AscCode требуется получить, пропустив через String.Format(), массив байтов (всех...

Отсортировать символы, введенной с клавиатуры строки в порядке возрастания их номеров в ASCII -таблице.
Написать программу, сортирующую символы, введенной с клавиатуры строки в порядке возрастания их...


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

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

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