我是C ++ newb(我相信你能告诉我)我想我会尝试编写一些加密程序,将输入转换为文件中的数字。
我做了一张桌子,给每个字母都有自己的号码。对于每个字母,代码本身都有点像这样:
if (Letter = "P")
{
FILEO.open("Encrypted.txt", ios::app);
FILEO << " 259";
FILEO.close();
}
它提出“无法从'const char [2]'转换为'char'”
任何人都可以建议我如何从信中获得一个数字吗? 提前问候
答案 0 :(得分:2)
您的条件检查是错误的。它应该是==
,而不是=
。单个=
表示分配,而==
表示条件检查。
我假设Letter
是一个字符数组。在这种情况下,您可以使用strcmp
将其与P
进行比较。
if(strcmp(Letter, "P") == 0)
{
// rest of the code
}
如有必要,请查看strcmp
函数参考here。
如果Letter
只是char
,那么您需要将其与此P
进行比较 -
if(Letter == 'P')
{
// rest of the code
}
字符周围的单引号使其成为字符文字,然后可以使用==
与另一个字符进行比较。
答案 1 :(得分:2)
如果Letter是char,请使用char literal:
if (Letter == 'P')
...
答案 2 :(得分:2)
您无法将C ++ char与C ++字符串进行比较!你应该使用单引号来表示字符,而不是双引号。此外,C ++ equals运算符不是=,它是==。 single =是赋值运算符。
你应该写下这样的条件:
if (Letter == 'P')
{
FILEO.open("Encrypted.txt", ios::app);
FILEO << " 259";
FILEO.close();
}
答案 3 :(得分:1)
(Letter = "P")
这是一项作业,而不是比较。
你可能意味着(Letter == "P")
这也是错误的,你需要strcmp
。
答案 4 :(得分:1)
你需要使用strcmp来比较.... as =是一个赋值运算符....
答案 5 :(得分:1)
我建议您在向我们提供错误消息时,向我们提供完整的消息 - 包括行号,以便我们知道 发生了错误(或者告诉我们它是什么行)发生在)。注意那些行号可以极大地帮助找到真正的问题。
给出错误消息我假设Letter是char类型 - 你需要理解文字字符串(用双引号括起来)和文字字符(用单引号括起来)之间的区别。
正如Luchian所提到的,你有一个任务而不是一个相等的测试 - 与Visual Basic不同,如果那是你来自的地方,两者有不同的符号。
那应该是:
if (Letter == 'P')