6

我有这段代码:

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

行 - buffer[bytes] = NULL 给了我一个警告:从 NULL 转换为非指针类型 'char'。我如何摆脱这个警告?

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

NULL是一个常量,表示 C 和 C++ 中的空指针。

NUL是 ASCII NUL 字符,在 C 和 C++ 中终止字符串并表示为\0.

您也可以使用0,这与 完全相同\0,因为在 C 中,字符文字具有int类型。在 C++ 中,字符常量是 type char

于 2011-05-18T06:39:49.693 回答