【问题标题】:using unsigned char and string as function declarations使用 unsigned char 和 string 作为函数声明
【发布时间】:2012-12-13 05:46:01
【问题描述】:

我需要编写一个名为 bitstring 的函数,它采用在此函数中创建的无符号字符:

size_t bs2n(string s)
{
  assert (s.size() > 0);
  if (s.size() == 1) 
    return s[0]-'0';
  else {
    string smaller = s.substr(0,s.size()-1); 
    return 2 * bs2n(smaller) + s[s.size()-1] - '0';
  }
}

此函数占用 8 位并返回 0-255 之间的无符号字符

我需要能够将它转换回来,但是在写下函数参数和类的第一行时遇到了问题。

我拥有的是:

string unsignedchar bitstring(unsigned char)

我认为应该是这样的:

string unsigned char bitstring(unsigned char val)

这会更有意义,但仍然没有意义,为什么我需要第一个无符号字符......

函数的第一行应该怎么写?

【问题讨论】:

  • 您在第二个函数中声明了两种返回类型?
  • 嗯,我要返回的是一串位,以“01010101 10100011 10110000”为例作为返回语句

标签: c++ unsigned-char


【解决方案1】:

参数不是你的问题,而是你的函数声明。您向函数声明两种返回类型

string unsigned char bitstring(unsigned char val)

函数返回一个字符串...等待不...一个无符号字符...您只需要定义一个返回类型,例如省略字符串。你想要完成的是一个无符号字符数组,因此需要字符返回一个指向字符的指针。

void bitstring(unsigned char val, unsigned char* array) //write to array
  • 请注意,尽管返回数组是一种不好的做法并且通常会失败,但如果您在函数中分配数组并返回对它的引用,则引用将失败,因为数组将在函数结束时解构。更好的解决方案是将要读取的数组作为参数传递给函数,然后写入该数组。

【讨论】:

  • 如果我有一个数组说:string temp = ["106", "128", "88"];我通过你给我的函数运行它:bitstring(temp[i],temp);通过运行 3 次的 for 循环遍历整个数组,它会将我的 temp 函数更改为 temp=["01101010", ect..] 之类的东西吗?
  • 如果您需要更多帮助,请给我发送电子邮件,我会进一步为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 2012-11-04
  • 2013-07-18
  • 2011-07-23
  • 1970-01-01
相关资源
最近更新 更多