【问题标题】:How to cut off leading digits? C++如何切断前导数字? C++
【发布时间】:2010-09-22 02:17:42
【问题描述】:

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

1923 年至 23 岁

2001 至 01

1234 到 34

123 到 23

只有

#include <iomanip>
#include <iostream>

谢谢!

【问题讨论】:

    标签: c++ iomanip


    【解决方案1】:

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

    int num =2341;
    
    cout << num%100;
    

    将显示 41。

    如果您需要前导零,请执行以下操作:

    std::cout << std::setw(2) << std::setfill('0') << num%100 << std::endl;
    

    【讨论】:

    • 这更简单,你得到了我的投票(因为他的问题暗示他没有使用字符串,没有#include
    • 您需要设置 ostream 宽度和填充字符,否则此代码不会发出前导零。 std::cout &lt;&lt; std::setw(2) &lt;&lt; std::setfill('0') &lt;&lt; 3 &lt;&lt; '\n';
    • 感谢 Rudi,我在第一次回答这个问题时就想到了这一点,但我没想到实际上把它放进去 - 包括在内。
    【解决方案2】:

    如果您的数字是 int 形式(而不是字符串形式),您应该考虑使用 modulo operator

    如果数字是 char[] 形式,则有一个简单的解决方案,即对字符串进行索引,例如:

    char *myString = "ABCDE";
    int lengthOfMyString = 5;
    cout << myString[lengthOfMyString - 3]
         << myString[lengthOfMyString - 5]
         << myString[lengthOfMyString - 4];
    //outputs the word CAB
    

    【讨论】:

    • 哇,谢谢,这非常简单。我肯定想多了。
    • 太好了,很高兴能帮上忙。如果您能点击复选标记以正式接受我的回答,那就太好了。
    • 只显示最后两个字符(如要求),它是cout &lt;&lt; &amp;myString[lengthOfString - 2],其中 & 运算符获取该字符的地址,导致运算符myString.substr(myString.size() - 2); 对于两者,您应该首先知道或检查字符串是否至少有 2 个字符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 2023-03-17
    • 2010-12-20
    • 1970-01-01
    相关资源
    最近更新 更多