6

私はこのコードブロックを持っています:

int myFunc( std::string &value )
{
    char buffer[fileSize];
    ....
    buffer[bytesRead] = NULL;
    value = buffer;
    return 0;
}

行 - buffer[bytes] = NULL は警告を出しています: Convert to non-pointer type 'char' from NULL. この警告を取り除くにはどうすればよいですか?

4

3 に答える 3

25

使わないNULL?これは通常、ポインター用に予約されており、ポインターはなく、単純なだけcharです。\0(null-terminator)または単純なを使用するだけ0です。

于 2011-05-18T05:51:05.227 に答える
3

buffer[bytesRead] = 0; // NULL はポインター用です

提案として、コピーを避けたい場合は、以下を検討できます。

int myFunc (std::string &value)
{
  s.resize(fileSize);
  char *buffer = const_cast<char*>(s.c_str());
  //...
  value[bytesRead] = 0;
  return 0;
}
于 2011-05-18T06:03:15.067 に答える
0

NULLNUL

NULLC および C++ の null ポインターを表す定数です。

NULは ASCII NUL 文字で、C および C++ では文字列を終了し、 として表され\0ます。

C では文字リテラルに型があるため0、 とまったく同じ を使用することもできます。\0intC++ では、文字定数は typecharです。

于 2011-05-18T06:39:49.693 に答える