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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js怎么把函数字符串转成函数_字符串处理函数

發(fā)布時間:2023/12/19 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js怎么把函数字符串转成函数_字符串处理函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

整理一下日常用到的c++中的字符串處理函數(shù)

1.strpbrk和strspn

最近看了一個解析http請求的方法,里面用到了這倆函數(shù),在這里記錄一下。首先,http的請求報文的格式如下:

strpbrk和strspn的原型和注釋為:

/* Find the first occurrence in S of any character in ACCEPT. */ extern char *strpbrk (char *__s, const char *__accept)__THROW __asm ("strpbrk") __attribute_pure__ __nonnull ((1, 2)); /* Return the length of the initial segment of S whichconsists entirely of characters in ACCEPT. 該函數(shù)返回 s 中第一個不在字符串 accept 中出現(xiàn)的字符下標。 */ extern size_t strspn (const char *__s, const char *__accept)__THROW __attribute_pure__ __nonnull ((1, 2));

結合實例進行說明,現(xiàn)在假設報文如下:

現(xiàn)在結合代碼和上面示例進行解析: http_conn::HTTP_CODE http_conn::parse_request_line(char *text) {m_url = strpbrk(text, " t"); //m_url=t/chapter17/user.html HTTP/1.1if (!m_url){return BAD_REQUEST;}*m_url++ = '0'; //將t替換為0 m_url=/chapter17/...char *method = text; //應為有0的存在,method=POSTif (strcasecmp(method, "GET") == 0)m_method = GET;else if (strcasecmp(method, "POST") == 0){m_method = POST;cgi = 1;}elsereturn BAD_REQUEST;m_url += strspn(m_url, " t"); //確保第一個不是空格 m_url=/chapter17/...m_version = strpbrk(m_url, " t"); //m_version=tHTTP/1.1if (!m_version)return BAD_REQUEST;*m_version++ = '0'; //將t替換為0 m_version=HTTP1.1m_version += strspn(m_version, " t");if (strcasecmp(m_version, "HTTP/1.1") != 0)return BAD_REQUEST;if (strncasecmp(m_url, "http://", 7) == 0){m_url += 7;m_url = strchr(m_url, '/');}if (strncasecmp(m_url, "https://", 8) == 0){m_url += 8;m_url = strchr(m_url, '/');}if (!m_url || m_url[0] != '/')return BAD_REQUEST;//當url為/時,顯示判斷界面if (strlen(m_url) == 1)strcat(m_url, "judge.html");m_check_state = CHECK_STATE_HEADER;return NO_REQUEST; }

2.strcpy

char *strcpy(char *strDest,const char *strSrc); 微軟中的此函數(shù)的參數(shù)說明: /*** *char *strcpy(dst, src) - copy one string over another * *Purpose: * Copies the string src into the spot specified by * dest; assumes enough room. * *Entry: * char * dst - string over which "src" is to be copied * const char * src - string to be copied over "dst" * *Exit: * The address of "dst" * *Exceptions: *******************************************************************************/

有時筆試中會讓手寫一下strcpy的代碼,并問一下為什么會返回char*?

char * __cdecl strcpy(char * dst, const char * src) {char * cp = dst;while( *cp++ = *src++ ); /* Copy src over dst */return( dst );//這塊要注意一下返回dst,而不是cp,因為cp是棧上的變量,如果強行返回, //會導致輸出為亂碼 }

大部分人可能看到為什么會返回char*,會想到的是越界的問題,在strcpy是假設dst有足夠空間的。如果src的長度>dst的長度,也可以拷貝過去,但在最后程序會報

Stack around the variable 'dst' was corrupted.

至于為什么這么做?

通過這篇博客的博主,我了解到了是為了獲得靈活性。例如:

char str[20]; int length = strlen( strcpy(str, “Hello World”) ); 為什么strcpy的返回值是char* ??blog.csdn.net

至此,解釋完畢,后續(xù)再補充其他字符串的處理函數(shù)。

總結

以上是生活随笔為你收集整理的js怎么把函数字符串转成函数_字符串处理函数的全部內容,希望文章能夠幫你解決所遇到的問題。

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