关于string类型的字符串是否以\0结尾
今天在帶大一學(xué)生C++上機(jī)時(shí),涉及到一個(gè)string類型的字符串是否以\0結(jié)尾的問題,本來我很堅(jiān)定string類型結(jié)尾并沒有\(zhòng)0,C風(fēng)格的字符數(shù)組才會(huì)那樣。但是程序運(yùn)行結(jié)果卻說明string類型的字符串后面確實(shí)有\(zhòng)0。
于是回實(shí)驗(yàn)室后自己又實(shí)驗(yàn)了下,才發(fā)現(xiàn)這和編譯器有關(guān),真坑爹。
對(duì)于如下一段測(cè)試程序,在C-free 5.0和g++ 4.1上輸出yes,而在VS2010上執(zhí)行時(shí)報(bào)錯(cuò)!
[cpp] view plaincopy print?
當(dāng)把上面代碼中str[1]改成str[2]時(shí),VS2010依然報(bào)錯(cuò),但C-free 5.0輸出了no,而g++ 4.1還是輸出yes
另外,在網(wǎng)上查資料時(shí)發(fā)現(xiàn):
全局的std::getline返回std::string,這個(gè)不一定是'\0'結(jié)尾。有的編譯器會(huì)加,有的編譯器不會(huì)加。但是,注意:新的C++標(biāo)準(zhǔn)C++11里面規(guī)定std::string一定是以'\0'結(jié)尾,就看你的編譯器有沒有實(shí)現(xiàn)新標(biāo)準(zhǔn)了。
istream::getline返回c字符數(shù)組,這個(gè)一定是'\0'結(jié)尾。
總結(jié)
以上是生活随笔為你收集整理的关于string类型的字符串是否以\0结尾的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OJ系列之---单词倒排
- 下一篇: 静态函数讲解