1,如果要輸入一個帶有空格的字符串
可以用gets()命令。例如,
gets(buff)表示從鍵盤輸入字符串,存入buff的字符數組中。
2,求一個字符串的長度
可以用strlen()函數解決
strlen()表示從函數形參開始的位置開始掃描,直到遇到/0字符才結束
3.
strcmp函數
strcmp函數是比較兩個字符串的大小,返回比較的結果。一般形式是:
i=strcmp(字符串,字符串);
其中,字符串1、字符串2均可爲字符串常量或變量;i 是用於存放比較結果的整型變量。比較結果是這樣規定的:
①字符串1小於字符串2,strcmp函數返回一個負值;
②字符串1等於字符串2,strcmp函數返回零;
③字符串1大於字符串2,strcmp函數返回一個正值;那麼,字符中的大小是如何比較的呢?來看一個例子。
實際上,字符串的比較是比較字符串中各對字符的ASCII碼。首先比較兩個串的第一個字符,若不相等,則停止比較並得出大於或小於的結果;如果相等就接着比較第二個字符然後第三個字符等等。如果兩上字符串前面的字符一直相等,像"disk"和"disks" 那樣, 前四個字符都一樣, 然後比較第五個字符, 前一個字符串"disk"只剩下結束符'/0',後一個字符串"disks"剩下's','/0'的ASCII碼小於's'的ASCII碼,所以得出了結果。因此無論兩個字符串是什麼樣,strcmp函數最多比較到其中一個字符串遇到結束符'/0'爲止,就能得出結果。
注意:字符串是數組類型而非簡單類型,不能用關係運算進行大小比較。
if("ABC">"DEF") /*錯誤的字符串比較*/
if(strcmp("ABC","DEF") /*正確的字符串比較*/
4.
有string類型的一個字符串"335 3dde eogo eeoigev" 請問如何做到以下?
分割到string類型的一個數組中:str[0]="335" str[1]="3dde" str[2]=eogo str[3]=eeoigev
可以通過istringstream實現:
//---------------------------------------------------------------------------
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main(void)
{
string str[4],stra("335 3dde eogo eeoigev");
istringstream a(stra.c_str());
a>>str[0]>>str[1]>>str[2]>>str[3];
cout<<str[0]<<endl<<str[1]<<endl<<str[2]<<endl<<str[3]<<endl;
return 0;
}
//---------------------------------------------------------------------------
5 另一個可以輸入帶空格的字符串的函數
cin.getline
此函數是按行讀取,其語法爲:cin.getline(字符指針,字符個數N,結束符);
功能是:一次讀取多個字符(包括空白字符),直到讀滿N-1個,或者遇到指定的結束符爲止(默認的是/0)。
例:
#include <iostream>
using namespace std;
void main()
{
char a[10];
cin.getline(a,10);
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
}
輸入:1234567890123
輸出:1 2 3 4 5 6 7 8 9 _ (第10位爲空白字符'/0')