1. #include<string>的疑問
C++ 的strings(字元串類 類型) ----- 摘自c-free的幫助
構造函數
string();
string( size_type length, char ch );
string( const char *str );
string( const char *str, size_type length );
string( string &str, size_type index, size_type length );
string( input_iterator start, input_iterator end );
字元串的構造函數創建一個新字元串,包括:
以length為長度的ch的拷貝(即length個ch)
以str為初值 (長度任意),
以index為索引開始的子串,長度為length, 或者
以從start到end的元素為初值. 例如,
string str1( 5, 'c' );
string str2( "Now is the time..." );
string str3( str2, 11, 4 );
cout << str1 << endl;
cout << str2 << endl;
cout << str3 << endl;
顯示 ccccc
Now is the time...
time
操作符(Operators) 語法: ==
>
<
>=
<=
!=
+
+=
[]
你可以用 ==, >, <, >=, <=, and !=比較字元串. 可以用 + 或者 += 操作符連接兩個字元串, 並且可以用[]獲取特定的字元.相關主題:
at(), compare().
添加文本(append) 語法: basic_string &append( const basic_string &str );
basic_string &append( const char *str );
basic_string &append( const basic_string &str, size_type index, size_type len );
basic_string &append( const char *str, size_type num );
basic_string &append( size_type num, char ch );
basic_string &append( input_iterator start, input_iterator end );
append() 函數可以完成以下工作:
在字元串的末尾添加str,
在字元串的末尾添加str的子串,子串以index索引開始,長度為len
在字元串的末尾添加str中的num個字元,
在字元串的末尾添加num個字元ch,
在字元串的末尾添加以迭代器start和end表示的字元序列. 例如以下代碼:
string str = "Hello World";
str.append( 10, '!' );
cout << str << endl;
顯示 Hello World!!!!!!!!!!
相關主題:
+ 操作符賦值(assign)語法: basic_string &assign( const basic_string &str );
basic_string &assign( const char *str );
basic_string &assign( const char *str, size_type num );
basic_string &assign( const basic_string &str, size_type index, size_type len );
basic_string &assign( size_type num, char ch );
函數以下列方式賦值:
用str為字元串賦值,
用str的開始num個字元為字元串賦值,
用str的子串為字元串賦值,子串以index索引開始,長度為len
用num個字元ch為字元串賦值. 例如以下代碼:
string str1, str2 = "War and Peace";
str1.assign( str2, 4, 3 );
cout << str1 << endl;
顯示 and
at語法: reference at( size_type index );
at()函數返回一個引用,指向在index位置的字元. 如果index不在字元串范圍內, at() 將報告"out of range"錯誤,並拋出out_of_range異常。 比如下列代碼: string text = "ABCDEF";
char ch = text.at( 2 );
顯示字元 'C'. 相關主題:
[]操作符begin語法:iterator begin();
begin()函數返回一個迭代器,指向字元串的第一個元素.相關主題:
end()c_str語法: const char *c_str();
c_str()函數返回一個指向正規C字元串的指針, 內容與本字元串相同. 相關主題:
[] 操作符容量(capacity)語法: size_type capacity();
capacity()函數返回在重新申請更多的空間前字元串可以容納的字元數. 這個數字至少與 size()一樣大.相關主題:
max_size(), reserve(), resize(), size(), 比較(compare)語法: int compare( const basic_string &str );
int compare( const char *str );
int compare( size_type index, size_type length, const basic_string &str );
int compare( size_type index, size_type length, const basic_string &str, size_type index2,
size_type length2 );
int compare( size_type index, size_type length, const char *str, size_type length2 );
compare()函數以多種方式比較本字元串和str,返回:返回值情況小於零this < str零this == str大於零this > str不同的函數:
比較自己和str,
比較自己的子串和str,子串以index索引開始,長度為length
比較自己的子串和str的子串,其中index2和length2引用str,index和length引用自己
比較自己的子串和str的子串,其中str的子串以索引0開始,長度為length2,自己的子串以index開始,長度為length 相關主題:
操作符拷貝()語法: size_type ( char *str, size_type num, size_type index );
()函數拷貝自己的num個字元到str中(從索引index開始)。返回值是拷貝的字元數data語法: const char *data();
data()函數返回指向自己的第一個字元的指針.相關主題:
c_str()empty語法: bool empty();
如果字元串為空則empty()返回真(true),否則返回假(false).end語法:iterator end();
end()函數返回一個迭代器,指向字元串的末尾(最後一個字元的下一個位置).相關主題:
begin()刪除(erase)語法:iterator erase( iterator pos );
iterator erase( iterator start, iterator end );
basic_string &erase( size_type index = 0, size_type num = npos );
erase()函數可以:
刪除pos指向的字元, 返回指向下一個字元的迭代器,
刪除從start到end的所有字元, 返回一個迭代器,指向被刪除的最後一個字元的下一個位置
刪除從index索引開始的num個字元, 返回*this. 參數index 和 num 有默認值, 這意味著erase()可以這樣調用:只帶有index以刪除index後的所有字元,或者不帶有任何參數以刪除所有字元. 例如:
string s("So, you like donuts, eh? Well, have all the donuts in the world!");
cout << "The original string is '" << s << "'" << endl;
s.erase( 50, 14 );
cout << "Now the string is '" << s << "'" << endl;
s.erase( 24 );
cout << "Now the string is '" << s << "'" << endl;
s.erase();
cout << "Now the string is '" << s << "'" << endl;
將顯示 The original string is 'So, you like donuts, eh? Well, have all the donuts in the world!'
Now the string is 'So, you like donuts, eh? Well, have all the donuts'
Now the string is 'So, you like donuts, eh?'
Now the string is ''
查找(find)語法: size_type find( const basic_string &str, size_type index );
size_type find( const char *str, size_type index );
size_type find( const char *str, size_type index, size_type length );
size_type find( char ch, size_type index );
find()函數:
返回str在字元串中第一次出現的位置(從index開始查找)。如果沒找到則返回string::npos,
返回str在字元串中第一次出現的位置(從index開始查找,長度為length)。如果沒找到就返回string::npos,
返回字元ch在字元串中第一次出現的位置(從index開始查找)。如果沒找到就返回string::npos例如,
string str1( "Alpha Beta Gamma Delta" );
unsigned int loc = str1.find( "Omega", 0 );
if( loc != string::npos )
cout << "Found Omega at " << loc << endl;
else
cout << "Didn't find Omega" << endl;
find_first_of語法: size_type find_first_of( const basic_string &str, size_type index = 0 );
size_type find_first_of( const char *str, size_type index = 0 );
size_type find_first_of( const char *str, size_type index, size_type num );
size_type find_first_of( char ch, size_type index = 0 );
find_first_of()函數:
查找在字元串中第一個與str中的某個字元匹配的字元,返回它的位置。搜索從index開始,如果沒找到就返回string::npos查找在字元串中第一個與str中的某個字元匹配的字元,返回它的位置。搜索從index開始,最多搜索num個字元。如果沒找到就返回string::npos,查找在字元串中第一個與ch匹配的字元,返回它的位置。搜索從index開始。 相關主題:
find()find_first_not_of語法: size_type find_first_not_of( const basic_string &str, size_type index = 0 );
size_type find_first_not_of( const char *str, size_type index = 0 );
size_type find_first_not_of( const char *str, size_type index, size_type num );
size_type find_first_not_of( char ch, size_type index = 0 );
find_first_not_of()函數:
在字元串中查找第一個與str中的字元都不匹配的字元,返回它的位置。搜索從index開始。如果沒找到就返回string::nops在字元串中查找第一個與str中的字元都不匹配的字元,返回它的位置。搜索從index開始,最多查找num個字元。如果沒找到就返回string::nops在字元串中查找第一個與ch不匹配的字元,返回它的位置。搜索從index開始。如果沒找到就返回string::nops相關主題:
find()find_last_of語法: size_type find_last_of( const basic_string &str, size_type index = npos );
size_type find_last_of( const char *str, size_type index = npos );
size_type find_last_of( const char *str, size_type index, size_type num );
size_type find_last_of( char ch, size_type index = npos );
find_last_of()函數:
在字元串中查找最後一個與str中的某個字元匹配的字元,返回它的位置。搜索從index開始。如果沒找到就返回string::nops在字元串中查找最後一個與str中的某個字元匹配的字元,返回它的位置。搜索從index開始,最多搜索num個字元。如果沒找到就返回string::nops在字元串中查找最後一個與ch匹配的字元,返回它的位置。搜索從index開始。如果沒找到就返回string::nops相關主題:
find()find_last_not_of語法: size_type find_last_not_of( const basic_string &str, size_type index = npos );
size_type find_last_not_of( const char *str, size_type index = npos);
size_type find_last_not_of( const char *str, size_type index, size_type num );
size_type find_last_not_of( char ch, size_type index = npos );
find_last_not_of()函數:
在字元串中查找最後一個與str中的字元都不匹配的字元,返回它的位置。搜索從index開始。如果沒找到就返回string::nops在字元串中查找最後一個與str中的字元都不匹配的字元,返回它的位置。搜索從index開始,最多查找num個字元如果沒找到就返回string::nops在字元串中查找最後一個與ch不匹配的字元,返回它的位置。搜索從index開始。如果沒找到就返回string::nops相關主題:
find()get_allocator語法: allocator_type get_allocator();
get_allocator()函數返回本字元串的配置器.插入(insert)語法:iterator insert( iterator i, const char &ch );
basic_string &insert( size_type index, const basic_string &str );
basic_string &insert( size_type index, const char *str );
basic_string &insert( size_type index1, const basic_string &str, size_type index2, size_type num );
basic_string &insert( size_type index, const char *str, size_type num );
basic_string &insert( size_type index, size_type num, char ch );
void insert( iterator i, size_type num, const char &ch );
void insert( iterator i, iterator start, iterator end );
insert()函數的功能非常多:
在迭代器i表示的位置前面插入一個字元ch,
在字元串的位置index插入字元串str,
在字元串的位置index插入字元串str的子串(從index2開始,長num個字元),
在字元串的位置index插入字元串str的num個字元,
在字元串的位置index插入num個字元ch的拷貝,
在迭代器i表示的位置前面插入num個字元ch的拷貝,
在迭代器i表示的位置前面插入一段字元,從start開始,以end結束. 相關主題:
replace()長度(length)語法: size_type length();
length()函數返回字元串的長度. 這個數字應該和size()返回的數字相同.相關主題:
size()max_size語法: size_type max_size();
max_size()函數返回字元串能保存的最大字元數。rbegin語法: const reverse_iterator rbegin();
rbegin()返回一個逆向迭代器,指向字元串的最後一個字元。相關主題:
rend()rend語法: const reverse_iterator rend();
rend()函數返回一個逆向迭代器,指向字元串的開頭(第一個字元的前一個位置)。相關主題:
rbegin()替換(replace)語法: basic_string &replace( size_type index, size_type num, const basic_string &str );
basic_string &replace( size_type index1, size_type num1, const basic_string &str, size_type index2,
size_type num2 );
basic_string &replace( size_type index, size_type num, const char *str );
basic_string &replace( size_type index, size_type num1, const char *str, size_type num2 );
basic_string &replace( size_type index, size_type num1, size_type num2, char ch );
basic_string &replace( iterator start, iterator end, const basic_string &str );
basic_string &replace( iterator start, iterator end, const char *str );
basic_string &replace( iterator start, iterator end, const char *str, size_type num );
basic_string &replace( iterator start, iterator end, size_type num, char ch );
replace()函數:
用str中的num個字元替換本字元串中的字元,從index開始
用str中的num2個字元(從index2開始)替換本字元串中的字元,從index1開始,最多num1個字元
用str中的num個字元(從index開始)替換本字元串中的字元
用str中的num2個字元(從index2開始)替換本字元串中的字元,從index1開始,num1個字元
用num2個ch字元替換本字元串中的字元,從index開始
用str中的字元替換本字元串中的字元,迭代器start和end指示範圍
用str中的num個字元替換本字元串中的內容,迭代器start和end指示範圍,
用num個ch字元替換本字元串中的內容,迭代器start和end指示範圍. 例如,以下代碼顯示字元串"They say he carved it himself...find your soul-mate, Homer." string s = "They say he carved it himself...from a BIGGER spoon";
string s2 = "find your soul-mate, Homer.";
s.replace( 32, s2.length(), s2 );
cout << s << endl;
相關主題:
insert()保留空間(reserve)語法: void reserve( size_type num );
reserve()函數設置本字元串的capacity 以保留num個字元空間。 相關主題:
capacity()resize語法: void resize( size_type num );
void resize( size_type num, char ch );
resize()函數改變本字元串的大小到num, 新空間的內容不確定。也可以指定用ch填充。rfind語法: size_type rfind( const basic_string &str, size_type index );
size_type rfind( const char *str, size_type index );
size_type rfind( const char *str, size_type index, size_type num );
size_type rfind( char ch, size_type index );
rfind()函數:
返回最後一個與str中的某個字元匹配的字元,從index開始查找。如果沒找到就返回string::npos返回最後一個與str中的某個字元匹配的字元,從index開始查找,最多查找num個字元。如果沒找到就返回string::npos返回最後一個與ch匹配的字元,從index開始查找。如果沒找到就返回string::npos例如,在下列代碼中第一次調用rfind()返回string::npos,因為目標詞語不在開始的8個字元中。然而,第二次調用返回9,因為目標詞語在開始的20個字元之中。 int loc;
string s = "My cat's breath smells like cat food.";
loc = s.rfind( "breath", 8 );
cout << "The word breath is at index " << loc << endl;
loc = s.rfind( "breath", 20 );
cout << "The word breath is at index " << loc << endl;
相關主題:
find()size語法: size_type size();
size()函數返回字元串中現在擁有的字元數。相關主題:
length(), max_size()substr語法: basic_string substr( size_type index, size_type num = npos );
substr()返回本字元串的一個子串,從index開始,長num個字元。如果沒有指定,將是默認值 string::npos。這樣,substr()函數將簡單的返回從index開始的剩餘的字元串。例如: string s("What we have here is a failure to communicate");
string sub = s.substr(21);
cout << "The original string is " << s << endl;
cout << "The substring is " << sub << endl;
顯示: The original string is What we have here is a failure to communicate
The substring is a failure to communicate
交換(swap)語法: void swap( basic_string &str );
swap()函數把str和本字元串交換。例如: string first( "This comes first" );
string second( "And this is second" );
first.swap( second );
cout << first << endl;
cout << second << endl;
顯示: And this is second
This comes first
2. if (donutString.indexOf("dozen") != -1)是什麼意思
意思是donutString里是否含有"dozen"。
indexOf() 方法可返回某個指定的字元串值在字元串中首次出現的位置,indexOf() 方法對大小寫敏感!如果要檢索的字元串值沒有出現,則該方法返回 -1。
例如:
在 "Hello world!" 字元串內進行不同的檢索:
<script type="text/javascript">
var str="Hello world!"
document.write(str.indexOf("Hello") + "<br />")
document.write(str.indexOf("World") + "<br />")
document.write(str.indexOf("world"))
</script>
以上代碼的輸出:
0
-1
6
(2)donuts股票代碼擴展閱讀:
用法
String.indexOf
public intindexOf(int ch)返回指定字元在此字元串中第一次出現處的索引。如果在此 String 對象表示的字元序列中出現值為 ch 的字元,則返回第一次出現該字元的索引(以 Unicode 代碼單元表示)。對於位於 0 到 0xFFFF(包括 0 和 0xFFFF)范圍內的 ch 的值,返回值是 this.charAt(k) == ch為 true 的最小值k。對於 ch 的其他值,返回值是
this.codePointAt(k) == ch 為 true 最小值k。無論哪種情況,如果此字元串中沒有這樣的字元,則返回 -1。
參數:ch - 一個字元(Unicode 代碼點)。
返回:在該對象表示的字元序列中第一次出現該字元的索引,如果未出現該字元,則返回 -1。