我想显示每个字母的ascii代码 例如
输入:HelloWorld
这是我现在的代码
#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 << "Ascii Value:" << value << endl;
return 0;
}
我只能获取ascii代码的总值,例如1100, 不是每个字母的每个代码值,例如7 + 11 + ... = 1100。
我该如何解决?
答案 0 :(得分:0)
您应该使用字符串作为输入(它是c ++,而不是c)。你的for循环总和32个字符,即使用户输入一个较短的字符串(程序将从内存中读取随机值)。要从int
转换为char
,您可以使用stringstream
。这导致
#include <iostream>
#include <string>
#include <sstream>
int main() {
std::string input;
std::stringstream sstr;
int value = 0;
std::cout << "Input: ";
std::cin >> input;
for (int i = 0; i < input.size(); i++) {
sstr << int(input[i]) << " + ";
value += input[i];
}
std::string str(sstr.str());
std::cout << "Ascii Value:" << str.substr(0, str.size() - 3) << " = " << value << std::endl;
return 0;
}