我想在C 中输出整个格式的控制台线(80个字符(。
应该看起来像这样:
Some things on the left side some other on the right side
数据包含两个返回std :: string和固定文本的迭代函数。这样的东西:
std::cout << (*some_iterator)->getID() << " some text:" << LOTSOFSPACES << (*some_other_iterator)->getName() << " some more text.";
结果应始终是80个字符。
我尝试用STD :: SETW和STD :: SETFILL,STD :: left and std ::右侧弄乱,右,使用弦乐并计算我必须创建的空间。但是什么都没有用,大多数想法都完全破坏了输出。
有什么想法吗?不幸的是,我不允许使用外部库。
如果您可以确定这两个部分总是小于40个字符(或者可以以其他任何方式分两列(,则可以这样做:
std::string firstPart = (*some_iterator)->getID() + " some text:";
std::string secondPart = (*some_other_iterator)->getName() + " some more text.";
std::cout << std::setw(40) << std::left << firstPart
<< std::setw(40) << std::right << secondPart;
在线查看
更通用的解决方案是简单地计算字符串之间的间距,然后手动插入它。这不需要具有已知长度的列:
std::string firstPart = (*some_iterator)->getID() + " some text:";
std::string secondPart = (*some_other_iterator)->getName() + " some more text.";
std::size_t spacingSize = 80 - firstPart.length() - secondPart.length();
//Add some code to check if spacingSize is not negative!
std::cout << firstPart << std::string(spacingSize, ' ') << secondPart;
在线查看
您可以尝试将Coursor设置为位置。首先,您必须添加库:
#include <windows.h>
现在您可以使用函数:
COORD c;
c.X = x_coordinate;
c.Y = y_coordinate;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);