2012-10-22 53 views
0

可能重複:
C++ string.substr() function problemC++串SUBSTR函數的索引問題

string s = ""; 

cout<<s.substr(0,4)<<endl; 

cout<<s.substr(4,7)<<endl; 

上面的代碼線的輸出是相當出乎意料的,s.substr(0,4 )給了我「0123」,s.substr(4,7)給了我「456789」。它預計只有「456」。我是否在這裏錯過了一些東西,並且在C++中有沒有其他的substr函數可供選擇,這會讓我在第二次調用時只有「456」。

+0

這絕對是一個騙局,但我找不到它。 –

+0

@JohnDibling這是一個完全相同的問題:http://stackoverflow.com/questions/2477850/c-string-substr-function-problem我會投票結束重複。 – jogojapan

+0

@jogojapan:那不是我想的那個,但它會。 –

回答

2

substr的第二個參數是符號的數量,而不是您所假設的最終指數。您應使用substr(4,3)

5

substr的第二個參數是所需子字符串的長度,而不是結束索引。所以,而不是s.substr(4,7),你想s.substr(4,3)

2

substr取初始位置和所需的長度 - 見here

嘗試substr(4,3)