亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++中std::string::npos的用法

 更新時(shí)間:2023年08月07日 08:55:18   作者:VoladorL  
這篇文章主要介紹了C++中std::string::npos的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

C++中std::string::npos

(1)它是一個(gè)常量靜態(tài)成員值,對(duì)于 size_t 類型的元素具有最高可能值。

(2)它實(shí)際上意味著直到字符串的末尾。

(3)它用作字符串成員函數(shù)中長(zhǎng)度參數(shù)的值。

(4)作為返回值,它通常用于表示沒(méi)有匹配項(xiàng)。

(5)數(shù)據(jù)類型為size_t的話string:npos常量被定義為-1,因?yàn)閟ize_t是無(wú)符號(hào)整數(shù)類型,-1是該類型的最大可能表示值。

使用示例

作為沒(méi)有匹配項(xiàng)的示例

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string str = "I am cver";
	size_t index = str.find('.'); 
	if(index == string::npos)
	{
		cout << "This does not contain any period!" << endl;
		cout << index << endl;
	}
}

輸出

This does not contain any period!
18446744073709551615

作字符串成員函數(shù)中長(zhǎng)度參數(shù)的值

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string str = "I am cver.";
	size_t index = str.find('.'); 
	if(index == string::npos)
	{
		cout << "This does not contain any period!" << endl;
		cout << index << endl;
	}
	else
	{
		str.replace(index, string::npos, "!");
		cout << str << endl;
		cout << index << endl;
	}		
}

輸出:

I am cver!
9

string::npos的一些說(shuō)明

定義

std::string::npos的定義:

static const size_t npos = -1;

表示size_t的最大值(Maximum value for size_t),如果對(duì) -1表示size_t的最大值有疑問(wèn)可以采用如下代碼驗(yàn)證:

#include <iostream>
#include <limits>
#include <string>
using namespace std;
int main()
{
? ? size_t npos = -1;
? ? cout << "npos: " << npos << endl;
? ? cout << "size_t max: " << numeric_limits<size_t>::max() << endl;
}?

在我的PC上執(zhí)行結(jié)果為:

npos:           4294967295

size_t max:  4294967295

可見(jiàn)他們是相等的,也就是說(shuō)npos表示size_t的最大值

使用

1.如果作為一個(gè)返回值(return value)表示沒(méi)有找到匹配項(xiàng)

例如:

#include <iostream>
#include <limits>
#include <string>
using namespace std;
int main()
{
? ? string filename = "test";
? ? cout << "filename : " << filename << endl;
? ? size_t idx = filename.find('.'); ? //作為return value,表示沒(méi)有匹配項(xiàng)
? ? if(idx == string::npos) ? ?
? ? {
? ? ? ? cout << "filename does not contain any period!" << endl;
? ? }
}

2.但是string::npos作為string的成員函數(shù)的一個(gè)長(zhǎng)度參數(shù)時(shí)

表示“直到字符串結(jié)束(until the end of the string)”

例如:

tmpname.replace(idx+1, string::npos, suffix);

這里的string::npos就是一個(gè)長(zhǎng)度參數(shù),表示直到字符串的結(jié)束,配合idx+1表示,string的剩余部分。

#include <iostream>
#include <limits>
#include <string>
using namespace std;
int main()
{
? ? string filename = "test.cpp";
? ? cout << "filename : " << filename << endl;
? ? size_t idx = filename.find('.'); ? //as a return value
? ? if(idx == string::npos) ? ?
? ? {
? ? ? ? cout << "filename does not contain any period!" << endl;
? ? }
? ? else
? ? {
? ? ? ? string tmpname = filename;
? ? ? ? tmpname.replace(idx + 1, string::npos, "xxx"); //string::npos作為長(zhǎng)度參數(shù),表示直到字符串結(jié)束
? ? ? ? cout << "repalce: " << tmpname << endl;
? ? }
}

執(zhí)行結(jié)果為:

filename:test.cpp

replace: test.xxx

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++實(shí)現(xiàn)將輸入的內(nèi)容輸出到文本文件

    C++實(shí)現(xiàn)將輸入的內(nèi)容輸出到文本文件

    這篇文章主要介紹了C++實(shí)現(xiàn)將輸入的內(nèi)容輸出到文本文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C語(yǔ)言如何利用異或進(jìn)行兩個(gè)值的交換詳解

    C語(yǔ)言如何利用異或進(jìn)行兩個(gè)值的交換詳解

    最近在工作中遇到了兩個(gè)值交換的需求,發(fā)現(xiàn)自己對(duì)異或有些忘記,所以索性寫(xiě)出來(lái),方便以后需要的時(shí)候參考學(xué)習(xí),下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言如何利用異或進(jìn)行兩個(gè)值的交換的相關(guān)資料,需要的朋友可以參考下。
    2017-09-09
  • C/C++可變參數(shù)的使用

    C/C++可變參數(shù)的使用

    可變參數(shù)的使用方法遠(yuǎn)遠(yuǎn)不止以下幾種,不過(guò)在C,C++中使用可變參數(shù)時(shí)要小心,在使用printf()等函數(shù)時(shí)傳入的參數(shù)個(gè)數(shù)一定不能比前面的格式化字符串中的’%’符號(hào)個(gè)數(shù)少,否則會(huì)產(chǎn)生訪問(wèn)越界,運(yùn)氣不好的話還會(huì)導(dǎo)致程序崩潰
    2013-09-09
  • QT 實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能

    QT 實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能

    本文介紹了如何使用QT技術(shù)實(shí)現(xiàn)一個(gè)具有動(dòng)態(tài)效果的隨機(jī)驗(yàn)證碼系統(tǒng),詳述了CaptchaMovableLabel和CaptchaLabel兩個(gè)自定義類的功能,包括顯示和拖動(dòng)字母、繪制噪音點(diǎn)和線條、以及隨機(jī)生成字母等,講解了如何通過(guò)繼承QWidget和QLabel來(lái)實(shí)現(xiàn)這些功能,并通過(guò)MainWindow創(chuàng)建界面
    2024-10-10
  • C語(yǔ)言函數(shù)指針詳解

    C語(yǔ)言函數(shù)指針詳解

    本文主要介紹 C語(yǔ)言函數(shù)指針的知識(shí),這里整理了詳細(xì)的資料及示例代碼以便大家學(xué)習(xí)參考,有需要學(xué)習(xí)此部分知識(shí)的朋友可以參考下
    2021-09-09
  • C++單例模式應(yīng)用實(shí)例

    C++單例模式應(yīng)用實(shí)例

    這篇文章主要介紹了C++單例模式應(yīng)用實(shí)例,詳細(xì)講述了單例模式的原理與結(jié)構(gòu),及相關(guān)的打印機(jī)應(yīng)用實(shí)例,需要的朋友可以參考下
    2014-10-10
  • 淺談C++中char型變量的地址輸出

    淺談C++中char型變量的地址輸出

    下面小編就為大家?guī)?lái)一篇淺談C++中char 型變量的地址輸出。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • C++并查集常用操作

    C++并查集常用操作

    并查集 是一種樹(shù)型的數(shù)據(jù)結(jié)構(gòu),用于處理一些不相加集合的合并和查詢問(wèn)題。本文給大家分享C++并查集常用操作及算法實(shí)現(xiàn),感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • C++實(shí)現(xiàn)新年賀卡程序

    C++實(shí)現(xiàn)新年賀卡程序

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)賀卡程序,C++應(yīng)用程序編寫(xiě)的雪花賀卡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 淺談C++指針(必看)

    淺談C++指針(必看)

    下面小編就為大家?guī)?lái)一篇淺談C++指針(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06

最新評(píng)論