如何以这种方式在c ++中打印ascii代码值?

时间:2018-04-06 07:48:26

标签: c++

我想显示每个字母的ascii代码 例如

输入:HelloWorld

Ascii值:72 + 101 + 108 ... = 1100

这是我现在的代码

#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。

我该如何解决?

1 个答案:

答案 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;
}