2

この関数で作成された unsigned char を受け取る 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 の unsigned char を返します

元に戻す必要がありますが、関数のパラメーターとクラスの最初の行を書き留める際に問題が発生しました。

私が持っているものは次のとおりです。

string unsignedchar bitstring(unsigned char)

私はそれがあるべきだと思います:

string unsigned char bitstring(unsigned char val)

これはもっと理にかなっていますが、最初の署名なしの文字が必要な理由はまだわかりません...

関数の最初の行はどのように記述すればよいですか?

4

1 に答える 1

0

パラメータはあなたの問題ではなく、関数宣言です。関数に 2 つの戻り値の型を宣言します。

string unsigned char bitstring(unsigned char val)

関数は文字列を返します...待ってください... unsigned char... 戻り値の型を1つだけ定義する必要があります。たとえば、文字列を除外します。達成したいのは符号なし文字の配列であるため、文字が文字へのポインターを返す必要があります。

void bitstring(unsigned char val, unsigned char* array) //write to array
  • ただし、配列を返すことは悪い習慣であり、通常は失敗します。関数で配列を割り当てて参照を返すと、関数の最後で配列が分解されるため、参照は失敗します。より良い解決策は、読み取りたい配列をパラメーターとして関数に渡し、その配列に書き込むことです。
于 2012-12-13T05:50:52.020 に答える