如何切断前导数字?C++

dub*_*yaa 4 c++ iomanip

如何在不使用库的情况下切断数字的前导数字以仅显示最后两位数字.例如:

1923年至23日

2001年至01年

1234至34

123至23

只有

#include <iomanip>
#include <iostream>
Run Code Online (Sandbox Code Playgroud)

谢谢!

JSc*_*her 8

如果您只是使用整数,我建议只是为了简单而做mod%100:

int num =2341;

cout << num%100;
Run Code Online (Sandbox Code Playgroud)

会显示41.

如果你需要一个领先的零,那就做:

std::cout << std::setw(2) << std::setfill('0') << num%100 << std::endl;
Run Code Online (Sandbox Code Playgroud)


Alc*_*ive 6

如果你的数字是int形式(而不是字符串形式),你应该考虑使用modulo运算符.

如果数字是char []形式,则有一个简单的解决方案,涉及索引到字符串,如:

char *myString = "ABCDE";
int lengthOfMyString = 5;
cout << myString[lengthOfMyString - 3]
     << myString[lengthOfMyString - 5]
     << myString[lengthOfMyString - 4];
//outputs the word CAB
Run Code Online (Sandbox Code Playgroud)

  • 要仅显示最后两个字符(如提出的那样),它是`cout <<和myString [lengthOfString - 2]`,其中&运算符获取该字符的地址,从而导致运算符<< streaming a char*,假定为ASCIIZ这在这里很好用.对于std :: string,只需`myString.substr(myString.size() - 2);`对于两者,你应该知道或检查字符串是否至少有2个字符. (2认同)