【问题标题】:Convert single char into byte C++将单个字符转换为字节 C++
【发布时间】:2015-03-25 11:43:35
【问题描述】:

如何将单个字符转换为字节?

typedef unsigned char byte;
int main(int argc, char *argv[])
{
    /* The input argv[1] is a number */
    function(byte(argv[1]));
}
function A(Byte b)
{}

这是正确的转换方式吗?

【问题讨论】:

  • 您可以使用<string> 标头中的std::stoi 将参数转换为intint 隐式转换为字节值。
  • 您似乎正在尝试将argv[1] 转换为一个字节。 argv[1] 不是单个字符。它甚至不是char。这是一个指向char 的指针。您是否尝试将(C 风格)字符串 转换为字节?
  • 你能显示示例输入和预期输出吗?

标签: c++ casting char byte


【解决方案1】:

您误解了argv 是什么。那是一个字符数组或字符串数​​组。因此,如果您要运行:

> Program.exe 参数1 参数2

argv 将包括:

argv[0]: Drive:\FullPath\Program.exe
argv[1]: param1
argv[2]: param2

如果你想要一个特定的字符,那么你需要像argv[1][0] 这样的东西,它会给你p

请注意,即使您传递单个字符的参数,它仍然以字符串的形式出现,并且您必须访问特定的索引。您的评论说您正在传递一个数字,所以我建议使用atoi 函数,而不是强制转换它,也使用abs

【讨论】:

  • 对不起,我没有解释清楚。输入 argv[1] 只能介于 1 到 5 之间。 atoi 函数有效。谢谢!
  • argv 不是字符数组。它是一个指向字符的指针。
  • argv[3] 在那种情况下不会也为空吗?我相信会的。
  • @nabijaczleweli,是的,但不确定为什么这是相关的。
  • @David (a) 我只是在确保,并且 (b) 它允许更清晰的 (?) 参数处理循环。 (我见过关于参数处理的可怕事情。)
猜你喜欢
  • 2012-07-26
  • 2014-11-03
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
  • 1970-01-01
相关资源
最近更新 更多