/*
(1) 分离字符串的前n位,即获取字符串的前n个字符
(2) 获取整数的前n个数
*/
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string getNchar(string str, int n);
int getNNumber(int number, int n);
void main()
{
cout << "输如一个字符串" << endl;
string chars;
// cin面向单词,getline面向句子,还有gets---
getline(cin, chars);
cout << "请输入获取前几个字符" << endl;
int n = 0;
cin >> n;
// 获取前n个字符;
string nChars;
nChars = getNchar(chars, n);
cout << nChars << endl;
// 获取前n个整数
cout << "请输入一个整数( 0~(2^32-1) )---因为测试用的是int型--当然,可以对cin进行检测来判断是否输入正确" << endl;
int number = 0;
cin >> number;
cout << "请输入获取前几个位数" << endl;
int m = 0;
cin >> m;
int nNnumber = getNNumber(number, m);
cout << "前" << m << "位数是: " << nNnumber << endl;
}
int getNNumber(int number, int n)
{
// 获取number的全部位数
// 保存number;
int InitNumber = number;
int count=0;
do
{
count++;
number /= 10;
} while (number!=0);
cout << "number 的 位数是: " << count << endl;
if (n < 0)
{
n = 0;
cout << "ERROR: n < 0, 请输入大于0的n" << endl;
}
if (n > count)
{
n = count;
}
vector<int>tempNNumber;
for (size_t i = 0; i < n; i++)
{
int tempN = InitNumber % 10;
tempNNumber.push_back(tempN);
InitNumber /= 10;
}
for (size_t i = 0; i < tempNNumber.size(); i++)
{
cout << tempNNumber[i] << endl;
}
int Ndata = 0;
for (size_t i = 0; i < n; i++)
{
Ndata = Ndata + (tempNNumber[i] * pow(10, i));
}
return Ndata;
// 123 2 --
}
string getNchar(string str,int n)
{
string nChars;
if (n < 0)
{
n = 0;
cout << "ERROR: n < 0, 请输入大于0的n" << endl;
}
if (n > str.size())
{
n = str.size();
}
for (size_t i = 0; i < n; i++)
{
nChars.push_back(str[i]);
}
return nChars;
}
C++取前n个字符和整数的后n位数
最新推荐文章于 2023-02-09 13:35:03 发布