Jung Marco Ответов: 3

Как я могу изменить буквы на ascii-код и напечатать каждое их значение в C++?


Я пытался практиковать c++, и это то, что я хотел

=======================================================
Вход : (поставьте несколько букв, в данном случае я поставлю ааа) ааа
Вывод : (выведите каждое значение кода ascii из них таким образом ) 97 + 97 + 97 = 291
=======================================================

Что я уже пробовал:

#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
	char str[32] = { 0 };
	int value = 0, i;
	cout << "Input: ";
	cin >> str;

	for (i=0;i<32;i++)
	{
		value += str[i];
	}

	cout << "Output:" << value << endl;
	
    return 0;
}

3 Ответов

Рейтинг:
4

KarstenK

Вы пропустили только правильное завершение цикла.

for (i=0;i<strlen(str);i++)

Лучшим решением было бы также использовать класс std::string.

Я надеюсь, что это поможет, потому что вы не предоставили никакого подробного описания ошибки.


Рейтинг:
23

Jochen Arndt

Вы должны ограничить цикл количеством введенных символов. Поскольку вы используете C++, также нет необходимости использовать массив символов. Воспользуйся std::string вместо:

std::string str;
cin >> str;
for (size_t i = 0; i < str.length(); i++)
{
    value += str[i];
}
// Or since C++11
for (char& c : str)
{
    value += c;
}
Обратите внимание также, что вы забыли распечатать каждый отдельный код ASCII, что можно легко сделать в цикле.


CPallini

5.

Рейтинг:
13

Kornfeld Eliyahu Peter

Приведение значения к int ((int)str[i]) даст вам числовое значение (не обязательно ASCII, так как оно может зависеть от вашего локального) символа, но ваш способ '+=' не создаст печатную строку, как в вашем примере, а только конечный результат (сумму)...
Если вы хотите добавить значение каждого символа к выходу, поместите cout внутри цикла тоже...