使用unsigned char和string作为函数声明

时间:2012-12-13 05:46:01

标签: c++ unsigned-char

我需要编写一个名为bitstring的函数,它接受在此函数中创建的unsigned char:

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)

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

我应该如何写出函数的第一行?

1 个答案:

答案 0 :(得分:0)

参数不是你的问题,它将是你的函数声明。您向函数

声明了两种返回类型
string unsigned char bitstring(unsigned char val)

该函数返回一个字符串... wait no ...一个unsigned char ...你需要定义一个返回类型,例如遗漏字符串。你想要完成的是一个无符号字符数组,因此需要char返回一个指向字符的指针。

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