在C ++中将char字母转换为数字?

时间:2012-03-15 07:49:09

标签: c++ encryption hex decimal

我是C ++ newb(我相信你能告诉我)我想我会尝试编写一些加密程序,将输入转换为文件中的数字。

我做了一张桌子,给每个字母都有自己的号码。对于每个字母,代码本身都有点像这样:

    if (Letter = "P")
{
    FILEO.open("Encrypted.txt", ios::app);
    FILEO << " 259";
    FILEO.close();
}

它提出“无法从'const char [2]'转换为'char'”

任何人都可以建议我如何从信中获得一个数字吗? 提前问候

6 个答案:

答案 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')