欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

C++中std::string::npos

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

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

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

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

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

使用示例

作為沒有匹配項(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ù)中長度參數(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的一些說明

定義

std::string::npos的定義:

static const size_t npos = -1;

表示size_t的最大值(Maximum value for size_t),如果對 -1表示size_t的最大值有疑問可以采用如下代碼驗(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

可見他們是相等的,也就是說npos表示size_t的最大值

使用

1.如果作為一個返回值(return value)表示沒有找到匹配項(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,表示沒有匹配項(xiàng)
? ? if(idx == string::npos) ? ?
? ? {
? ? ? ? cout << "filename does not contain any period!" << endl;
? ? }
}

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

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

例如:

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

這里的string::npos就是一個長度參數(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作為長度參數(shù),表示直到字符串結(jié)束
? ? ? ? cout << "repalce: " << tmpname << endl;
? ? }
}

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

filename:test.cpp

replace: test.xxx

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    本文主要介紹 C語言函數(shù)指針的知識,這里整理了詳細(xì)的資料及示例代碼以便大家學(xué)習(xí)參考,有需要學(xué)習(xí)此部分知識的朋友可以參考下
    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ī)硪黄獪\談C++中char 型變量的地址輸出。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • C++并查集常用操作

    C++并查集常用操作

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

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

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

    淺談C++指針(必看)

    下面小編就為大家?guī)硪黄獪\談C++指針(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06

最新評論