#c #new-operator
#c #новый оператор
Вопрос:
C Как мне установить маркер строки, с которого будет начинаться моя строка? setw() не достигает того, для чего мне это нужно. Мне нужно, чтобы строка начиналась в определенной точке и заканчивалась всякий раз, когда кажется, что setw() делает прямо противоположное. Я пришлю вам то, как должен выглядеть конечный результат. Игнорируйте специфику получения нужных чисел из входного файла, так как у меня уже все есть. Я просто не могу правильно отформатировать его на экране печати или в выходном файле.
У меня уже есть заголовки и фактическое содержимое, чтобы обеспечить правильные результаты. Опять же, я просто не могу сделать макет таким, каким он мне нужен. (P.S. Я использую цикл while для извлечения информации из файла. и BP был преобразован в int из строки)
Вот мой код до сих пор. Я не уверен, что происходит такое, что не позволяет мне привести его в соответствие с приведенным выше примером. Я перепробовал все комбинации setw()
: левую, правую, внутреннюю и т. Д.
Возможно, это еще не в порядке, но я больше беспокоился о том, чтобы сначала убедиться, что у меня все есть, а затем беспокоиться о формате и порядке. (Мой поток сообщений находится в формате комментариев, пока я печатаю экран, чтобы проверить свой прогресс. В конечном итоге он будет использован. Я также уже знаю, что мой файл не закрывается в конце.)
ifstream inputfile; //ofstream outputfile; string Patient1; string Patient2; string Patient3; string fname; string lname; string bp; int pos; int systolic; int diastolic; string room; string stage; string risk; inputfile.open("E:\Patient3E.dat"); //Headers for output cout lt;lt; "Note" lt;lt; setw(5) lt;lt; "Room" lt;lt; setw(6) lt;lt; "Name" lt;lt; setw(23) lt;lt; "BP" lt;lt; setw(18) lt;lt; "Diagnosis" lt;lt; endl; cout lt;lt; "----" lt;lt; setw(5) lt;lt; "----" lt;lt; setw(26) lt;lt; "------------------------" lt;lt; setw(10) lt;lt; "---------" lt;lt; setw(17) lt;lt; "---------------" lt;lt; endl; while (inputfile gt;gt; fname gt;gt; lname gt;gt; bp gt;gt; room) // Convert string to int for comparison with numbers {bp.find("/"); pos = bp.find("/"); bp.substr(0, pos); systolic = stoi(bp.substr(0, pos)); diastolic = stoi(bp.substr(pos 1)); //else if for determining risk asterisks count if (((systolic gt;= 120) amp;amp; (systolic lt; 140)) || ((diastolic gt;= 80) amp;amp; (diastolic lt; 90))) {risk = " *"; } else if (((systolic gt;= 140) amp;amp; (systolic lt; 160)) || ((diastolic gt;= 90) amp;amp; (diastolic lt; 99))) {risk = " **"; } else if ((systolic gt;= 160) || (diastolic gt;= 100)) {risk = " ***"; } else if ((systolic lt; 120) || (diastolic lt; 80)) {risk = " "; } cout lt;lt; left lt;lt; setw(4) lt;lt; risk lt;lt; right lt;lt; setw(5) lt;lt; room lt;lt; lname lt;lt; ", " lt;lt; fname; //else if statements for adding to systolic values equal to or greater than 120 if (systolic lt; 120) {cout lt;lt; setw(11) lt;lt; systolic lt;lt; "/"; } else if (systolic gt;= 120) {cout lt;lt; setw(10) lt;lt; " " lt;lt; systolic lt;lt; "/"; } //else if statements for adding after diastolic for values equal to or greater than 80 if (diastolic lt; 80) {cout lt;lt; setw (0) lt;lt; diastolic; } else if (diastolic gt;= 80) {cout lt;lt; setw(0) lt;lt; diastolic lt;lt; " "; } //else if statements for determining stage if (((systolic gt;= 120) amp;amp; (systolic lt; 140)) || ((diastolic gt;= 80) amp;amp; (diastolic lt; 90))) {stage = "prehypertension"; } else if (((systolic gt;= 140) amp;amp; (systolic lt; 160)) || ((diastolic gt;= 90) amp;amp; (diastolic lt; 99))) {stage = "stage 1"; } else if ((systolic gt;= 160) || (diastolic gt;= 100)) {stage = "stage 2"; } else if ((systolic lt; 120) || (diastolic lt; 80)) {stage = "Normal"; } cout lt;lt; stage lt;lt; endl; } cout lt;lt; "Summary" lt;lt; endl; cout lt;lt; "Count" lt;lt; setw(13) lt;lt; "Diagnosis" lt;lt; endl; cout lt;lt; "-----" lt;lt; setw(23) lt;lt; "-------------------" lt;lt; endl; //pause funciton Pause(); return(0); }
Комментарии:
1. Я надеюсь, что это не настоящие медицинские данные, но они выглядят совсем не фальшивыми.
2. Как мне установить маркер строки, с которого будет начинаться моя строка? — Это не очень описательное название. Во-вторых, мы понятия не имеем, какой код вы написали, так как вы его не публиковали. Наконец, вы можете просто использовать a
std::string
, изменить его размер и вставить данные в строку в любом нужном вам положении. Затем выведите строку целиком.3. Они фальшивые, Ха-ха, извини, я должен был упомянуть, что это для класса
4. Я также добавил свой код в исходное сообщение, чтобы было легче понять, с чем у меня проблемы.
5. Очевидно, что это не весь код, который я написал, так как у меня уже есть весь шаблон, извлечение данных, сравнения для определения звездочек, знаков плюс и т. Д. Это как раз та часть, которая больше всего подчеркивает мою проблему, связанную с невозможностью привести имя в соответствие с началом буквы вместо «,».