c++中使用substr函數分離一個字符串(或整數)末尾的N位

今日在做PAT乙-1091 N-自守數這道題時,需要將一個整數K的末尾的N位分離出來。

例如將整數25592 的最後兩位 92 分離出來。

常規的做法是對這個整數做求餘運算,既  K % (10^N)

但求N的長度以及算10^N寫起代碼來比較煩。

 

於是在看了網上其他大神的博客後,get到了運用substr函數分離末尾數字的方法,現總結如下。

#include <bits/stdc++.h>
using namespace std;
int main()
{
	int n=3;//例如要分離最後三位 
	string str("123456789");
	string res=str.substr(str.length()-n); 
	cout<<res; //789
}
/*
1. substr形式:s.substr(pos, n)
2. 解釋:返回一個string,包含s中從pos開始的n個字符的拷貝(pos的默認值是0,n的默認值是s.size() - pos,即不加參數會默認拷貝整個s)
上例中省略了n,pos的值爲str.length()-n=9-3=6,故從字符串第六位(下標從零開始,既‘7’)開始拷貝,n的默認值爲9-6=3。所以最終實現了從‘7’開始分離3個字符

那麼,當我們要求一個數字的末尾N位時候,就可以先將這個數字轉換成string,然後再用這個方法很方便求得啦。

參考博客:C++中substr函數的用法 - GGBeng - 博客園

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章