char+int来更改char值



我刚接触C++,学了一个多月。我对Python有初级的了解,比如创建列表、修改列表、循环等。我不知道Python中的一些C++代码。

我正在为一个学校班级制作一个节目(创意节目(。这是我代码的一部分(底部描述(:

int number, new_one, num_letter;
char one;
cout << "You chose to encypher a messagenPlease choose an integer between 1-25:";
cin >> number;
cout << "How many letters are in your word?";
cin >> num_letter;
if (num_letter == 1)
{
cout << "Enter the first letter";
cin >> one;
new_one = one + number;
cout << "Your encrypted message is '" 
<< static_cast<char>(new_one) 
<< "' with the code number of " 
<< number;

我正在制作一个程序,它可以对信息进行加密和解密。用户选择消息的字母数(最多10个,因为我还不知道如何在C++中使用for-循环(。然后,他们选择一个整数。然后,他们输入字母,点击enter,输入字母,并点击enter获取消息中的字母数(我还不知道如何在C++中将字符串分隔为字符(。

当用户输入他们的字母并点击Enter时,我将该字母cin >>输入变量one,即char。然后,我将one添加到用户选择的number中,因此one的ASCII代码增加了number的值。

例如,当我为number输入3,为one的值输入h时,104(h的ASCII代码(应与3相加,得到107,然后我将其static_cast转换为char值。

但是,当我添加h3时,它不是创建107,而是创建155。其他变量也是如此。我尝试了cout’、static_cast<int>(one)(在本例中为字母h(和number(即3(。他们打印了CCD_ 28和CCD_。

但是,当我将这两个值相加时,它会打印155。为什么会发生这种情况?

这是我的解决方案。希望它能有所帮助!

#include <iostream>
using namespace std;
int main()
{
int offset = 0;
int num_with_offset;
int size;

// Gets offset from user
do{
cout << "You chose to encypher a messagenPlease choose an integer between 1-25: ";
cin >> offset;
} while (offset < 1 || offset > 25);

// Gets letters in word
do{
cout << "Letters in word: ";
cin >> size;
} while(size < 0);

// Given size, init arrays

int number[size];
char one[size];

// Conversion from char to int
for(int i = 0; i < (sizeof(one)/sizeof(one[0])); i++)
{
cout << "Enter character " << (i + 1) << ": ";
cin >> one[i];
num_with_offset = one[i] + offset;
// Converts ASCII to integer and stores it into array
number[i] = static_cast<int>(num_with_offset);
}

// Prints out the new encrypted message
for(int j = 0; j < (sizeof(number)/sizeof(number[0])); j++)
{
cout << "Your encrypted message is: "
<< number[j] << " , with the code number: "
<< offset << "." << endl;
}
cout << endl << endl;
return 0;
}

相关内容

  • 没有找到相关文章

最新更新