日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

c strlen C++ strlen

發布時間:2025/6/15 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c strlen C++ strlen 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先看下面幾個例子:

/* 定義數據 */

...
char *msg1 = "testtest";
char *msg2 = "test";
int len = 20, t = 1;
...

1-----> if( strlen(msg2) >= strlen(msg1) )...???? //right

2-----> if( strlen(msg2) - strlen(msg1) >= 0 )...?? //"error"

3-----> if( strlen(msg2) >= 10 )....?? //right

4-----> if( strlen(msg2) - 10 >= 0 )....??? //"error"

5-----> if( strlen(msg2) - len >= 0 )...?? //"error"

6-----> if( t - strlen(msg2) >= 0 )...?? //"error"

7-----> if( t >= strlen(msg2) )...??? //right

我們這里所說的"error"不是說語法上出錯。語法上都沒錯,編譯運行也都能通過。這里的"error"指的是:這條語句無法按照你預想的那樣工作。2,4,5,6這四條語句的結果將永遠是真。

為什么呢?

我們先看庫函數 strlen 的原型吧:

size_t strlen( char const *string );

注意strlen返回一個類型為size_t的值。那么size_t是什么類型呢?這個類型是在頭文件stddef.h中定義的,它是一個無符號整數類型。問題出來了,在表達式中使用無符號數可能導致不可預料的后果。

當表達式中存在有符號類型和無符號類型時,所有的操作數都自動轉換為無符號類型。無符號數的運算結果絕對不可能是負的。所以,2,4,5,6這四條語句的結果將永遠是真。

遇到這樣的情況,你要么用1,3,7這樣的形式,要么將strlen的返回值強制性轉換為int。

?

?

string類型不能用strlen()求長度的,strlen只適全char *類型的.

如果要求的話得先把string類型轉換成char *類型,用c_str()函數轉換

#include <iostream>
#include <string>

using namespace std;

int main()
{

string str="fjaljjfj";

int len;

len=strlen(str.c_str());

cout<<len<<endl;

return 0;

}

總結

以上是生活随笔為你收集整理的c strlen C++ strlen的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。