C string類中的空字元

2021-10-14 00:24:14 字數 861 閱讀 3147

在做leetcode時發現乙個問題。

題目如下:題目位址

題目不難,很容易做出來。

問題出現在自己寫的**裡,**如下:

class solution 

i++;

if (tmp[1] - tmp[0] >= 2)

}return result;}};

雖然提交通過了,但是在看for (; s[i - 1] == s[i]; i++)這一條語句時越看越不對勁。沒錯,你可能會覺得可能會造成訪問越界。然而提交程式通過了,原因是string類在最後乙個有效字元後面還存在乙個空字元,即s[s.size()] = 』 \0』。s[s.size()]是可以訪問的,但是s[s.size() + n], n>=1是會報錯的。

保險起見**應該變為:

for (; s[i - 1] == s[i] && i < s.size(); i++)
最後測試一下string類的size()函式是如何判斷字元截止的。

#include #include using namespace std;

int main() {

// 定義乙個內容為"\0"的字串

string s1("\0");

cout<

但是不可以在初始化時將單獨的\放在最後。

// 定義乙個內容為"123456\"的字串

string s11("123456\");

cout<

C string類中的字串查詢

c string類中的字串查詢 類string提供了大量查詢功能和搜尋功能,其中比較常用的查詢和搜尋函式是find 函式 find first not of 函式 find first of 函式 find last not of 函式 find last of 函式 rfind 等。find 函式...

c string類字串查詢

1 find 函式 find 函式用於在 string 字串中查詢子字串出現的位置,它其中的兩種原型為 size t find const string str,size t pos 0 const size t find const char s,size t pos 0 const 第乙個引數為...

C String類的實現

參考c primer.string類的實現,清翔兔 06,jan.include using namespace std class string string void private char m data inline string string const char str if str m...