截至目前,我正在使用下面的线来打印出点
fprintf( stdout, "%-40s[%d]", tag, data);
我期待输出会像下面这样,
Number of cards..................................[500] Fixed prize amount [in whole dollars]............[10] Is this a high winner prize?.....................[yes]
如何使用fprintf/printf打印短划线或点?
更快的方法:
如果事先知道您需要的最大填充量(通常是在格式化固定宽度表时的情况,例如您所拥有的那个),则可以使用静态"padder"字符串并且只是抓住一大块.这比调用printf
或cout
循环更快.
static const char padder[] = "......................"; // Many chars size_t title_len = strlen(title); size_t pad_amount = sizeof(padder) - 1 - title_len; printf(title); // Output title if (pad_amount > 0) { printf(padder + title_len); // Chop! } printf("[%d]", data);
你甚至可以在一个声明中做到这一点,有一些信念的飞跃:
printf("%s%s[%d]", title, padder + strlen(title), data);
您可以使用iostreams而不是printf轻松完成此操作
cout << setw(40) << setfill('.') << left << tag[i] << '[' << data[i] << ']' << endl;
或者,如果你真的需要使用fprintf(比如,你传递了一个FILE*来写)
strstream str; str << setw(40) << setfill('.') << left << tag[i] << '[' << data[i] << ']' << endl; printf(%s", str.str());