欧美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)它實際上意味著直到字符串的末尾。

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

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

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

使用示例

作為沒有匹配項的示例

#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

作字符串成員函數中長度參數的值

#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的最大值有疑問可以采用如下代碼驗證:

#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í)行結果為:

npos:           4294967295

size_t max:  4294967295

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

使用

1.如果作為一個返回值(return value)表示沒有找到匹配項

例如:

#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,表示沒有匹配項
? ? if(idx == string::npos) ? ?
? ? {
? ? ? ? cout << "filename does not contain any period!" << endl;
? ? }
}

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

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

例如:

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

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

執(zhí)行結果為:

filename:test.cpp

replace: test.xxx

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • C++實現將輸入的內容輸出到文本文件

    C++實現將輸入的內容輸出到文本文件

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

    C語言如何利用異或進行兩個值的交換詳解

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

    C/C++可變參數的使用

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

    QT 實現隨機驗證碼功能

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

    C語言函數指針詳解

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

    C++單例模式應用實例

    這篇文章主要介紹了C++單例模式應用實例,詳細講述了單例模式的原理與結構,及相關的打印機應用實例,需要的朋友可以參考下
    2014-10-10
  • 淺談C++中char型變量的地址輸出

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

    下面小編就為大家?guī)硪黄獪\談C++中char 型變量的地址輸出。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • C++并查集常用操作

    C++并查集常用操作

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

    C++實現新年賀卡程序

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

    淺談C++指針(必看)

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

最新評論