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