gpt4 book ai didi

c++ - 比较一个字符

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:43 25 4
gpt4 key购买 nike

所以,我正在尝试找出最好/最简单的方法来做到这一点。对于我的算法类,我们应该从文件中读取一个字符串(最多包含 40 个字符)并使用该字符串的第一个字符(data[1]...我们从 1 开始数组并希望使用 data[ 0] 作为后面的其他内容)作为旋转后面字母的旋转次数(最多 26)(基本上是凯撒密码)。

我们正在尝试做的一个例子是从一个文件中读入:2ABCD 并输出 CDEF。我肯定已经尝试过,但我只是不确定如何比较数组 char[] 中的第一个字母以查看它是哪个数字,最多 26 个。这就是我实现它的方式(不是整个代码,只是我遇到问题的部分):

int rotation = 0;
char data[41];

for(int i = 0; i < 41; i++)
{
data[i] = 0;
}

int j = 0;
while(!infile.eof())
{
infile >> data[j+1];
j++;
}

for(int i = 1; i < 27; i++)
{
if( i == data[1])
{
rotation = i;
cout << rotation;
}
}

对于旋转,我的输出始终为 0。我确定问题在于我正在尝试将 char 与数字进行比较并且可能必须转换为 ascii?但我只是想问问是否有更好的方法并获得一些正确方向的指示,因为我对 C++ 语法还很陌生。

谢谢,一如既往。

最佳答案

使用无格式输入代替格式化输入。使用

data[j+1] = infile.get();

代替

infile >> data[j+1];

此外,idata[1] 的比较需要不同。

for(int i = 1; i < 27; i++)
{
if( i == data[1]-'0')
// ^^^ need this to get the number 2 from the character '2'.
{
rotation = i;
std::cout << "Rotation: " << rotation << std::endl;
}
}

关于c++ - 比较一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27951130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com