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字串是否合法。