【问题标题】:Remove '+' after the last output [closed]在最后一个输出后删除“+”[关闭]
【发布时间】:2021-11-25 21:28:12
【问题描述】:

我有一个计算变化的 C++ 代码。

它接受输入,并根据接收变化的方式返回输出。

我需要在最后一次更改输出后删除 + 号。

有没有办法做到这一点?

我的代码:

if (n500 > 0) {
        cout << n500 << " x 500 + ";
    }
    if (n200 > 0) {
        cout << n200 << " x 200 + ";
    }
    if (n100 > 0) {
        cout << n100 << " x 100 + ";
    }
    if (n50 > 0) {
        cout << n50 << " x 50 + ";
    }
    if (n20 > 0) {
        cout << n20 << " x 20 + ";
    }
    if (n10 > 0) {
        cout << n10 << " x 10 + ";
    }
    if (n5 > 0) {
        cout << n5 << " x 5 + ";
    }
    if (n2 > 0) {
        cout << n2 << " x 2 + ";
    }
    if (n1 > 0) {
        cout << n1 << " x 1 + ";
    }
    return 0;
}

【问题讨论】:

    标签: c++ string


    【解决方案1】:

    我会做另一种方式:当先前的显示已经完成时,放置分隔符" + "

    const char* sep = "";
    if (n500 > 0) {
        std::cout << sep << n500 << " x 500";
        sep = " + ";
    }
    if (n200 > 0) {
        std::cout << sep << n200 << " x 200";
        sep = " + ";
    }
    if (n100 > 0) {
        std::cout << sep << n100 << " x 100 + ";
        sep = " + ";
    }
    if (n50 > 0) {
        std::cout << sep << n50 << " x 50 + ";
        sep = " + ";
    }
    if (n20 > 0) {
        std::cout << sep << n20 << " x 20 + ";
        sep = " + ";
    }
    if (n10 > 0) {
        std::cout << sep << n10 << " x 10 + ";
        sep = " + ";
    }
    if (n5 > 0) {
        std::cout << sep << n5 << " x 5 + ";
        sep = " + ";
    }
    if (n2 > 0) {
        std::cout << sep << n2 << " x 2 + ";
        sep = " + ";
    }
    if (n1 > 0) {
        std::cout << sep << n1 << " x 1 + ";
        sep = " + ";
    }
    

    顺便说一句,您可能会改用循环:

    const int ns[9] = {
        n500, n200, n100,
        n50, n20, n10,
        n5, n2, n1
    };
    const char* texts[9] = {
        " x 500", " x 200", " x 100",
        " x 50", " x 20", " x 10",
        " x 5", " x 2", " x 1"
    };
    
    const char* sep = "";
    for (int i = 0; i != 9; ++i) {
        if (ns[i] > 0) {
           std::cout << sep << ns[i] << texts[i];
           sep = " + ";
        }
    }
    

    【讨论】:

    • 我得到一个标识符“n500”在这些行上是不受限制的` const int ns[9] = { n500, n200, n100, n50, n20, n10, n5, n2, n1 }
    • 您不提供 MCVE...n500 是您的变量(我们假设已定义(对我而言,如 int))。
    【解决方案2】:

    用你的所有更新设置一个字符串,删除最后一个字符,然后用 cout 输出它。

    看看字符串流?

    【讨论】:

      猜你喜欢
      • 2017-09-13
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      • 2018-09-05
      • 2023-03-22
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      相关资源
      最近更新 更多