string 中的 length函數 和 size函數 的返回值??( ?還有 char [ ] 中 測量字符串的??strlen 函數?)
應該是 unsigned int 類型的
不可以 和 -1 比較。
應盡量避免 unsigned int 類型 和 int類型 數據 的比較 。
當unsigned int 類型 和 int類型 數據 比較 時 ,會 把int 類型 轉換 為 unsigned int類型 。如果 int是負數 ,轉換 為 unsigned int 會是 一個 很大 的正整數,所以 比較的時候 會很危險。
若 將 unsigned int 強制 轉換 為 int 再比較 時,不能說 沒有 問題。我覺得 也可能會 出現問題,相對來說 還是 比較好的。(摘自strlen返回值的問題)
-------------------------------------------------------------------------------------------------------------------------
// 例1
// string a="abcd";
// -1 和 a.length() 的比較結果
//代碼
#include<iostream>
#include<string>
using namespace std;
int main()
{string a="abcd";cout<<"a-----"<<a<<endl;cout<<"a.length()-----"<<a.length()<<endl;if( -1 >= a.length() )cout<<"*************"<<endl;return 0;
}
輸出:
a-----abcd
a.length()-----4
*************
Press any key to continue
-------------------------------------------------------------------------------------------------------------------------
// 例2
// string a="abcd";
// -1 和 a.size() 的比較結果
//代碼
#include<iostream>
#include<string>
using namespace std;
int main()
{string a="abcd";cout<<"a----"<<a<<endl;cout<<"a.size()----"<<a.size()<<endl;if(-1>=a.size())cout<<"*************"<<endl;return 0;
}
輸出:
a----abcd
a.size()----4
*************
Press any key to continue
-------------------------------------------------------------------------------------------------------------------------
// 例3
// char a[100]="abcd";
// -1 和 strlen(a) 的比較結果
//代碼
#include<iostream>
#include<string>
using namespace std;
int main()
{char a[100]="abcd";cout<<"a----"<<a<<endl;cout<<"strlen(a)----"<<strlen(a)<<endl;if( -1>=strlen(a) )cout<<"*************"<<endl;return 0;
}
輸出: a----abcd
strlen(a)----4
*************
Press any key to continue