我没有寻求帮助就走到了这一步,但我遇到了一个我似乎无法解决的问题。我喜欢密码学,所以现在我正在学习C++,我想制作程序来加密和解密字符串。我读到最好的方法是将文本转换为 ASCII,然后从那里开始,所以这是我用 C++ 编写的一个简单程序,用于尝试将 char 变量转换为 ASCII:
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
int main()
{
char strString[1000];
cout<<"Enter you message:"<<endl;
cin>>strString[1000];
string strEncrypt;
int a = 0;
while (strString != '\0')
{
int b = (int)strString[a];
strEncrypt.at(a) = b; //This is where I'm getting an error.
a++;
}
cout<<"Encrypted message:"<<endl;
cout<<strEncrypt<<endl;
}
所以,我已经尝试了我知道的所有 3 件事来解决问题(谷歌,检查丢失的分号,并确保我正在做 == 而不是 =,但这只是我不知道如何做的事情做,而不是我忘记的事情(我希望)。所以,任何帮助都会很棒!
最佳答案
您不必将字符更改为它们已经存在的 ASCII。字符在内存中与整数基本相同。
现在回答你的问题; .如果你想在字符串中设置一个字符,你可以这样做
string[index] = b;
在您的代码中要注意的另一件事。您正在使用 cin
从用户那里读取字符串。这不会让您阅读其中有空格的消息,并且只会阅读第一个单词。例如,如果用户输入“Love Crypto”,cin
将只读取“Love”,而“Crypto”将被忽略。要获取整行,请改用 getline
。
至于遍历字符串中的字符,最好按如下方式进行:
for(int i = 0; i < strString.length(); i++)
{
strString[i] = bla;
}
同样,您的代码实际上并没有做任何事情。它只是读取一个字母,然后将 “字母”
存储在另一个字符串中。
关于C++,文本到 ASCII while 循环错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7005645/