Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/263: Рейтинг темы: голосов - 263, средняя оценка - 4.79
0 / 0 / 1
Регистрация: 11.04.2010
Сообщений: 34

Перевод из string в ASCII

01.05.2010, 21:12. Показов 54957. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как можно перевести строку в ASCII коды? Есть ли возможность переводить сразу, а не через char?
Спасибо...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.05.2010, 21:12
Ответы с готовыми решениями:

Перевести из int в string по таблице ascii
подскажите как перевести из числа в символ? есть int a = 97; как получить std::string = "a" ?

Как ковертировать из ASCII опять в string?
Всем доброго здравия. Нашел программу, которая переводит буквы строки в порядковые номера по таблице ASCII, с помощью функции length()....

Перевод кириллицы в ASCII
Задание: В заданной строке после каждой буквы русского алфавита поставить ее код, а после латинской- символы <>; Помогите...

22
48 / 48 / 10
Регистрация: 12.01.2010
Сообщений: 183
01.05.2010, 21:15
Цитата Сообщение от rtr Посмотреть сообщение
Как можно перевести строку в ASCII коды? Есть ли возможность переводить сразу, а не через char?
Спасибо...
никаких усилий не нужно
приведу пример:

C
1
2
3
4
5
6
7
8
9
char c = 'e';
int n = c; // n = 101 тобиш е имеет аски код 101
//-------------------------------------------
const int n = 10;
 char m[n];
 int m2[n];
 
 for ( int i = 0 ; i < n ; i++ )
  m2[i] = m[i] ;
0
0 / 0 / 1
Регистрация: 11.04.2010
Сообщений: 34
01.05.2010, 21:35  [ТС]
Цитата Сообщение от лендер Посмотреть сообщение
никаких усилий не нужно
приведу пример:

C
1
2
3
4
5
6
7
8
9
char c = 'e';
int n = c; // n = 101 тобиш е имеет аски код 101
//-------------------------------------------
const int n = 10;
 char m[n];
 int m2[n];
 
 for ( int i = 0 ; i < n ; i++ )
  m2[i] = m[i] ;
спс, но это я знаю)... у меня вначале string... как его перевести в char? или можно как-то сразу в ascii?
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
01.05.2010, 21:49
Цитата Сообщение от rtr Посмотреть сообщение
у меня вначале string
Может поподробнее расскажешь, какой string, в каком начале.
Код приведи.
0
0 / 0 / 1
Регистрация: 11.04.2010
Сообщений: 34
01.05.2010, 22:01  [ТС]
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Может поподробнее расскажешь, какой string, в каком начале.
Код приведи.
Ну допустим так :
C++
1
2
3
string s='abcd';
int i;
i=(int)s.c_str();
Это же не правильно...
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
01.05.2010, 22:10
C++
1
2
3
4
5
6
std::string str ='abcd';
 
int* ascii_str = new int[str.lenght()];
 
for (int i = 0; i < str.lenght(); ++i)
  ascii_str[i] = str[i];
0
0 / 0 / 1
Регистрация: 11.04.2010
Сообщений: 34
01.05.2010, 22:21  [ТС]
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
C++
1
2
3
4
5
6
std::string str ='abcd';
 
int* ascii_str = new int[str.lenght()];
 
for (int i = 0; i < str.lenght(); ++i)
  ascii_str[i] = str[i];
спасибо) но можно как нибудь без массива обойтись? у меня строка из файла считывается и втесать этот код представляется затруднительным
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
01.05.2010, 22:28
rtr, задачу полностью огласи.
1
0 / 0 / 1
Регистрация: 11.04.2010
Сообщений: 34
01.05.2010, 22:40  [ТС]
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
rtr, задачу полностью огласи.
Вообщем... прикрутил, спасибо (только там length должно быть ) теперь правда, ещё один вопрос появился, если в строке перемешаны цифры и буквы (точнее разделены точкой: вася.241), как их отделить?
0
Peace 2 all shining faces
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
01.05.2010, 23:08
отделить пробелом к примеру:
C++
1
2
3
for(i = 0; i < str.length(); i++)
    if(str[i] == '.')
            str[i] = ' ';
Добавлено через 10 минут
есть еще вариант, если элемент массива str не равен букве, то мы сдвигаем весь массив на этот символ и запоминаем кол-во таких символов, чтобы перевыделить правильно память или забить конец массива нулями к примеру
можно слова переписывать в массив строк, пока не встретится другой символ, а цифры соответственно в обычный массив, или что именно вам нужно?
1
0 / 0 / 1
Регистрация: 11.04.2010
Сообщений: 34
02.05.2010, 00:39  [ТС]
Цитата Сообщение от Vorona Посмотреть сообщение
отделить пробелом к примеру:
C++
1
2
3
for(i = 0; i < str.length(); i++)
    if(str[i] == '.')
            str[i] = ' ';
Добавлено через 10 минут
есть еще вариант, если элемент массива str не равен букве, то мы сдвигаем весь массив на этот символ и запоминаем кол-во таких символов, чтобы перевыделить правильно память или забить конец массива нулями к примеру
можно слова переписывать в массив строк, пока не встретится другой символ, а цифры соответственно в обычный массив, или что именно вам нужно?
я решил не проверять файл два раза а забацил следующим образом

C++
1
2
3
4
5
6
7
8
9
10
11
if (atoi(str.c_str())==0)
 {
                int* ascii_str1 = new int[str.length()];
 
for (int i = 0; i < str.length(); i++)
ascii_str1[i] = str[i];
for (int i = 0; i < str.length(); i++)
                        cout<<ascii_str1[i]<<endl;
 }
 else
     val=atoi(str.c_str());
немного глупо, но вопрос решает... Правда тут у меня ещё одна проблема появилась, после последней буквы слова появляется ascii код 44. Как от него можно избавиться? И как заставить компилятор преобразовать фрагмент 44-44-44 преобразовывать как строку, а не цифру?
0
Peace 2 all shining faces
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
02.05.2010, 01:06
44 это запятая, как вы ее установили, так и избавьтесь, сама же запятая не устанавливается по-умолчанию или я что-то недопонимаю
44-44-44: вообще существует ф-ция itoa() преобразовывает цифры в строку
C
1
2
3
4
int number = 44-44-44;
char string[25];
itoa(number, string, 10);
printf("integer = %d string = %s\n", number, string);
вы это имели ввиду??
0
0 / 0 / 1
Регистрация: 11.04.2010
Сообщений: 34
02.05.2010, 01:13  [ТС]
Цитата Сообщение от Vorona Посмотреть сообщение
вы это имели ввиду??
на самом деле, у меня длинная строка, разделённая точками. На основе этих точек строка делится на подстроки и переводится в ascii. Убрать точки не получается... мне дальше все эти подстроки надо в двумерных массив забацать... наверно там придётся это убрать.

Да и не в этом дело, похоже... ибо сейчас он возвращает 165 код.
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
02.05.2010, 01:27
Цитата Сообщение от rtr Посмотреть сообщение
у меня длинная строка
Где она?
0
0 / 0 / 1
Регистрация: 11.04.2010
Сообщений: 34
02.05.2010, 01:31  [ТС]
Цитата Сообщение от mirso Посмотреть сообщение
Где она?
Вот
428000.ул.Мира.дом.97.квартира.107.тел.4 4-44-44.
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
02.05.2010, 01:32
И че ты с ней делать хочешь?
0
0 / 0 / 1
Регистрация: 11.04.2010
Сообщений: 34
02.05.2010, 01:35  [ТС]
Цитата Сообщение от mirso Посмотреть сообщение
И че ты с ней делать хочешь?
то что в цифрах, так и оставить в цифрах, а слова перевести в ascii.(там таких строк много.)
Всё это сделано, единственное, при переводе слов появляется символ ещё один.

ну и в конце концов всё это загнать в двумерный массив
0
Peace 2 all shining faces
 Аватар для Vorona
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
02.05.2010, 01:51
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int i, j, j1;
char *str1 = {"428000.ул.Мира.дом.97.квартира.107.тел.44-44-44"};
char str2[10][20];
 
for(i = 0; i < 10; i++)
    for(j = 0; j < 20; j++)
        str2[i][j] = 0;
 
j1 = j = 0;
for(i = 0; i < strlen(str1); i++){
    while(str1[i]!='.' && str1[i]!='\0')
        str2[j][j1++] = str1[i++];
    j1=0;
    j++;
}
for(i = 0; i < 10; i++)
    std::cout << str2[i] << std::endl;
переводит все, что разделено точками в отдельные строки и дальше делайте с ними, что хотите
(вариант немного грубоват, лучше сделать его более динамичным)
1
0 / 0 / 1
Регистрация: 11.04.2010
Сообщений: 34
02.05.2010, 02:03  [ТС]
спасибо... попробуем его прикрутить
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
02.05.2010, 02:09
Цитата Сообщение от rtr Посмотреть сообщение
прикрутить
крути
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
 
int main()//========================================================
{
    setlocale ( LC_ALL, "" );
 
    std::string s = "428000.ул.Мира.дом.97.квартира.107.тел.44-44-44";
    std::cout << s << std::endl; 
    
    for (size_t i = 0; i < s.size(); ++i)
    {
        if ( s[i] >= 48 && s[i] <= 57 ) 
            std::cout << s[i];
        else                            
            std::cout << '<' << (int)(s[i]&255) << '>';
    }
    std::endl(std::cout);
    return 0;
}//==================================================================
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.05.2010, 02:09
Помогаю со студенческими работами здесь

Перевод символов в ASCII
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main () { int a, b; cin &gt;&gt; a &gt;&gt; b; for (int i = a; i =...

Перевод ASCI в ASCII и наоборот
Добрый день учень нужна помощь... немогу никак разобраться с проблемой перевода кодировок, мне нужно чтоб в окне dos да и в текстовые файлы...

Перевод строки в ASCII символы
Привет всем! Прошу помочь кое что выяснить. Есть ли в С++ функция перевода строки в символы ASCII таблицы? Если все же такой нет,...

Перевод с двоичной системы в ASCII
Есть последовательность 01010111101101010101101111011 ( к примеру ), как перевести эту последовательность в ascii коды ?

Перевод символов в код таблицы ascii
помогите перевести элементы символьного массива в код таблицы ascii


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru