gpt4 book ai didi

c++ - 使用 set-width 对齐列

转载 作者:行者123 更新时间:2023-11-30 02:17:20 25 4
gpt4 key购买 nike

我正在尝试正确对齐此 C++ 作业。主要目标是从文件中正确读取数据,这正在完成,但输出未正确对齐。

有人建议将所有变量放入一个字符串中并逐行输出,但这似乎我需要重写程序的大部分内容,而且我不完全确定该怎么做。我附上了代码和输出如下所示。只是想知道是否有更好的方法在使用 setwidth 或其他基本对齐方法(如果存在)时保持所有内容对齐。顺便说一下,文件的输入可以改变。

    while (!PatientsFile.eof()) {
PatientsFile >> firstName;
PatientsFile >> lastName;
PatientsFile >> pulse;
PatientsFile >> respir;
PatientsFile >> oxygen;
PatientsFile >> room;

string name = firstName + ", " + lastName;

//patient info
cout << setw(4) << room << ' ';
cout << name;

//pulse
if (pulse >= 101) {
cout << setw(13) << "High=" << pulse << ' ';
dangerCount++; }
else if (pulse <= 59) {
cout << setw(16) << "Low=" << pulse << ' ';
dangerCount++; }
else {
cout << setw(19) << pulse << ' '; }

//respir
if (respir >= 21) {
cout << setw(5) << "High=" << respir << ' ';
dangerCount++; }
else if (respir <= 10) {
cout << setw(6) << "Low=" << respir << ' ';
dangerCount++; }
else {
cout << setw(7) << respir << ' '; }

//oxygen
if (oxygen >= 101) {
cout << setw(7) << "High=" << oxygen << ' ';
dangerCount++; }
else if (oxygen <= 91) {
cout << setw(5) << "Low=" << oxygen << ' ';
dangerCount++; }
else {
cout << setw(7) << oxygen << ' '; }

//dangerCount
if (dangerCount == 1) {
checkTotal++;
cout << "CHECK\n";}
else if (dangerCount == 2) {
alertTotal++;
cout << "ALERT***\n"; }
else if (dangerCount == 3) {
criticalTotal++;
cout << setw(15) << "CRITICAL****\n"; }
else {
normalTotal++;
cout << endl; }
dangerCount = 0;
}
//display totals
cout << endl << normalTotal << " Normal\n";
cout << alertTotal << " ALERT\n";
cout << checkTotal << " CHECK\n";
cout << criticalTotal << " CRITICAL\n";

输出:

Room Name                       Pulse  Respir  Oxygen    
-----------------------------------------------------
111 Pete, Moss Low=59 11 Low=91 ALERT***
312 Diana, Canser High=107 Low=10 96 ALERT***
332 Willie, Makit High=123 High=30 94 ALERT***
111 Betty, Wont Low=50 Low=10 Low=90 CRITICAL****
331 Freda, Spirit High=110 High=23 Low=90 CRITICAL****
321 Wilma, Moneylast High=132 18 Low=88 ALERT***
121 Robin, Banks Low=59 20 100 CHECK
122 Charlie, Horse Low=56 15 95 CHECK
121 Eileen, Back Low=45 17 Low=88 ALERT***
222 Eaton, Buggs 79 16 97
222 Summer, Day 60 12 92
231 Bea, Sting 73 High=21 Low=91 ALERT***
311 Anita, Bath High=111 High=33 97 ALERT***
232 April, Showers 61 High=22 93 CHECK
222 Rose, Bush 100 20 100
231 Buster, Leggs 88 High=44 Low=88 ALERT***
221 Barb, Wire 60 12 Low=82 CHECK
322 Jim, Shoos High=101 19 94 CHECK
322 Kris, Mass Low=4 14 99 CHECK
222 Rich, Bright 77 16 92

4 Normal
8 ALERT
6 CHECK
2 CRITICAL

最佳答案

您可以尝试使用制表符\t 来正确对齐您的列表。这是您可能想要查看的链接:How many spaces for tab character(\t)?

否则你将不得不做

cout << "text" << setw(#) << "text" << setw(#) << endl;

我建议不要这样做,因为它只是对集合数字进行硬编码并且很乏味,因为您必须计算并确保它正确匹配。

关于c++ - 使用 set-width 对齐列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53714482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com