我有这段代码:
int myFunc( std::string &value )
{
char buffer[fileSize];
....
buffer[bytesRead] = NULL;
value = buffer;
return 0;
}
行 - buffer[bytes] = NULL 给了我一个警告:从 NULL 转换为非指针类型 'char'。我如何摆脱这个警告?
不使用NULL
?它通常是为指针保留的,你没有指针,只有一个简单的char
. 只需使用\0
(null-terminator) 或简单的0
.
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;
}
NULL
≠ NUL
。
NULL
是一个常量,表示 C 和 C++ 中的空指针。
NUL
是 ASCII NUL 字符,在 C 和 C++ 中终止字符串并表示为\0
.
您也可以使用在 C++ 中,字符常量是 type 0
,这与 完全相同\0
,因为在 C 中,字符文字具有int
类型。char
。