C 在同一行中左右显示文本

C++ display text left and right in same row

本文关键字:一行 左右 显示 文本      更新时间:2023-10-16

我想在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);