我之前上 stackoverflow 查证过字符串的结尾是'0'-terminate啊, 如下引用. 但是今天查 string 的, 上面图片里的官方文档的说法又都变成了 null-terminated
了. 希望大家解答下, 谢谢
‘0’ terminate a string, not NULL, the NULL macro isn’t intended for use in terminating strings.----(左边包含了链接)
天蓬老师2017-04-17 15:25:44
如果是char*的字串,函式庫函數都是預設以'
#include <string>
#include <iostream>
int main()
{
std::string s = "hello";
s[1] = 'rrreee';
std::cout << s << std::endl;
return 0;
}
高洛峰2017-04-17 15:25:44
所謂 null-terminated
中的 null
指的應該是 ASCII 字元集裡的 NUL
,其編碼是數字 0,在 C 語言裡是 ' '
,本質是一個 char
。
而 C 語言裡 NULL
這個宏指的是空指針,也就是 ((void*)0)
,是一個指針型。
兩者類型不同,本質上是不同的概念,用途也不同。
你引用的 stackoverflow
上的原貼討論的應該是這個問題。