日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

c strlen C++ strlen

發(fā)布時(shí)間:2025/6/15 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c strlen C++ strlen 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

先看下面幾個(gè)例子:

/* 定義數(shù)據(jù) */

...
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

我們這里所說(shuō)的"error"不是說(shuō)語(yǔ)法上出錯(cuò)。語(yǔ)法上都沒(méi)錯(cuò),編譯運(yùn)行也都能通過(guò)。這里的"error"指的是:這條語(yǔ)句無(wú)法按照你預(yù)想的那樣工作。2,4,5,6這四條語(yǔ)句的結(jié)果將永遠(yuǎn)是真。

為什么呢?

我們先看庫(kù)函數(shù) strlen 的原型吧:

size_t strlen( char const *string );

注意strlen返回一個(gè)類(lèi)型為size_t的值。那么size_t是什么類(lèi)型呢?這個(gè)類(lèi)型是在頭文件stddef.h中定義的,它是一個(gè)無(wú)符號(hào)整數(shù)類(lèi)型。問(wèn)題出來(lái)了,在表達(dá)式中使用無(wú)符號(hào)數(shù)可能導(dǎo)致不可預(yù)料的后果。

當(dāng)表達(dá)式中存在有符號(hào)類(lèi)型和無(wú)符號(hào)類(lèi)型時(shí),所有的操作數(shù)都自動(dòng)轉(zhuǎn)換為無(wú)符號(hào)類(lèi)型。無(wú)符號(hào)數(shù)的運(yùn)算結(jié)果絕對(duì)不可能是負(fù)的。所以,2,4,5,6這四條語(yǔ)句的結(jié)果將永遠(yuǎn)是真。

遇到這樣的情況,你要么用1,3,7這樣的形式,要么將strlen的返回值強(qiáng)制性轉(zhuǎn)換為int。

?

?

string類(lèi)型不能用strlen()求長(zhǎng)度的,strlen只適全char *類(lèi)型的.

如果要求的話得先把string類(lèi)型轉(zhuǎn)換成char *類(lèi)型,用c_str()函數(shù)轉(zhuǎn)換

#include <iostream>
#include <string>

using namespace std;

int main()
{

string str="fjaljjfj";

int len;

len=strlen(str.c_str());

cout<<len<<endl;

return 0;

}

總結(jié)

以上是生活随笔為你收集整理的c strlen C++ strlen的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。