【问题标题】:Cannot display the correct output using setw(20)使用 setw(20) 无法显示正确的输出
【发布时间】:2020-07-17 07:33:16
【问题描述】:

这是我的代码。我用左<< setw(20) 尝试了所有不同的方法,但它没有显示正确的结果。

void MotorVehicle::moveTo(const char* address)
    {
        if (strcmp(Address, address) != 0)
        {
            cout << "|" << setw(10) << PlateNumber << "| |" << setw(20) << Address << " --->--- ";
            cout << address << "|" << endl;
            strcpy(Address, address);
        }
    }

大家好,这是预期的输出。

|    T-1111| |            Montreal --->--- New York            |
|    T-1111| |            New York --->--- New Jersey          |
|    T-1111| |            New Jersey --->--- Toronto           |

【问题讨论】:

  • 你能展示你得到了什么吗?也可能值得展示变量中的内容(这看起来很明显,但错误可能存在于显而易见的地方)。
  • 类 MotorVehicle { private: char PlateNumber[MAX_PLATE + 1];字符地址[MAX_ADDRESS + 1]; int 年;
  • ---------------------------------------------------- |> T1:车辆 ---------------------------------------- | 2010 | VVV-111 |工厂 | VVV-111| |工厂--->--- 多伦多市中心| | VVV-111| |多伦多市中心 --->--- 密西沙加| | VVV-111| |密西沙加 --->--- 北约克|
  • 把这种事情作为对问题的编辑。 cmets 的格式无法胜任工作。

标签: c++


【解决方案1】:

记住setw 不是“粘性”。它仅适用于后续输出字段。在被取代之前,所有其他操纵器均适用。

因此我认为你想要:

 cout << setw(20) << left << address << "|" << endl;

【讨论】:

    猜你喜欢
    • 2020-06-14
    • 2022-08-15
    • 2021-03-26
    • 1970-01-01
    • 2018-11-15
    • 2016-03-02
    • 2018-04-27
    • 2015-11-01
    • 2022-08-09
    相关资源
    最近更新 更多