سؤال

وأنا متأكد من هذا هو سؤال بسيط في ما يخص التنسيق ولكن هنا ما تريد تحقيقه:

وأريد أن بيانات الناتج على الشاشة باستخدام cout. أريد أن الانتاج هذا في شكل تنسيق جدول. ما أعنيه بهذا هو الأعمدة والصفوف يجب أن تكون محاذاة بشكل صحيح. مثال:

Test                 1
Test2                2
Iamlongverylongblah  2
Etc                  1

وأنا أشعر بالقلق فقط مع خط الفردية حتى خط بلدي لإخراج الآن (لا يعمل) هو

وcout << var1 << "\t\t" << var2 << endl;

ما يعطيني شيئا مثل:

Test                 1
Test2                  2
Iamlongverylongblah         2
Etc                  1
هل كانت مفيدة؟

المحلول

setw .

#include <iostream>
#include <iomanip>
using namespace std;

int main () {
  cout << setw(21) << left << "Test"    << 1 << endl;
  cout << setw(21) << left << "Test2"   << 2 << endl;
  cout << setw(21) << left << "Iamlongverylongblah"     << 2 << endl;
  cout << setw(21) << left << "Etc"     << 1 << endl;
  return 0;
}

نصائح أخرى

وأنصح باستخدام تنسيق دفعة . استخدام شيء من هذا القبيل:

cout << format("%|1$30| %2%") % var1 % var2;

ويجب العثور على طول أطول سلسلة في العمود الأول. ثم أنت بحاجة لإخراج كل سلسلة في العمود الأول في حقل مع طول هو أن تلك أطول سلسلة. وهذا يعني بالضرورة لا يمكنك كتابة أي شيء حتى كنت قد قرأت كل سلسلة.

ويمكنك أن تفعل ذلك مع

string str = "somthing";
printf ("%10s",str);
printf ("%10s\n",str);
printf ("%10s",str);
printf ("%10s\n",str);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top