关于string类型的字符串是否以\0结尾
生活随笔
收集整理的這篇文章主要介紹了
关于string类型的字符串是否以\0结尾
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天在帶大一學生C++上機時,涉及到一個string類型的字符串是否以\0結尾的問題,本來我很堅定string類型結尾并沒有\0,C風格的字符數組才會那樣。但是程序運行結果卻說明string類型的字符串后面確實有\0。
于是回實驗室后自己又實驗了下,才發現這和編譯器有關,真坑爹。
對于如下一段測試程序,在C-free 5.0和g++ 4.1上輸出yes,而在VS2010上執行時報錯!
[cpp] view plaincopy print?
當把上面代碼中str[1]改成str[2]時,VS2010依然報錯,但C-free 5.0輸出了no,而g++ 4.1還是輸出yes
另外,在網上查資料時發現:
全局的std::getline返回std::string,這個不一定是'\0'結尾。有的編譯器會加,有的編譯器不會加。但是,注意:新的C++標準C++11里面規定std::string一定是以'\0'結尾,就看你的編譯器有沒有實現新標準了。
istream::getline返回c字符數組,這個一定是'\0'結尾。
總結
以上是生活随笔為你收集整理的关于string类型的字符串是否以\0结尾的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OJ系列之---单词倒排
- 下一篇: 静态函数讲解