84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
ringa_lee
所以結論是:string::length()或string::size()並不是調用strlen()得到的,你的實驗已經證明了這一點。 string並不是用0來確定字串是否結尾的,c++中的string是一個類,它和c中單純的字元數組有很大的不同。
如果你用c字串初始化std::string,又不直接提供其長度,那就只能當成合法的c字串來讀取長度。 (有能提供長度的構造器)
你的第二個c字串就是不合法的,這種字串無法取得長度。也沒有辦法檢驗一個c字串是否合法。
所以結論是:string::length()或string::size()並不是調用strlen()得到的,你的實驗已經證明了這一點。 string並不是用0來確定字串是否結尾的,c++中的string是一個類,它和c中單純的字元數組有很大的不同。
如果你用c字串初始化std::string,又不直接提供其長度,那就只能當成合法的c字串來讀取長度。 (有能提供長度的構造器)
你的第二個c字串就是不合法的,這種字串無法取得長度。也沒有辦法檢驗一個c字串是否合法。