如何摆脱 - “警告:从NULL转换为非指针类型'char'”?

时间:2011-05-18 05:46:55

标签: c++ warnings opensuse

我有这段代码:

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

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

3 个答案:

答案 0 :(得分:22)

不要使用NULL?它通常是为指针保留的,你没有指针,只有一个简单的char。只需使用\0(null-terminator)或简单的0

答案 1 :(得分:2)

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;
}

答案 2 :(得分:1)

NULLNUL

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

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

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