gpt4 book ai didi

c++ - 用空格格式化字符串

转载 作者:行者123 更新时间:2023-11-30 00:52:42 28 4
gpt4 key购买 nike

我正在尝试用 C++ 制作一个优雅的日志系统。我目前正在使用 printf(),尽管 cout 也是一个选项。

我想实现的是这样的

console_log( "ClassName", "funcName", "Message." );

我目前的代码很简单:

static void console_log( const std::string & className, const std::string & funcName, const std::string & message ) {
printf( "%s : %s : %s\n", className.c_str(), funcName.c_str(), message.c_str() );
}

打印效果不错,像这样

// For example:
console_log( "MenuPanel", "selectedThisButton", "Something happened." );
console_log( "MenuPanel", "selectedAnotherButton", "Another thing happened." );

// Output:
MenuPanel : selectedThisButton : Something happened.
MenuPanel : selectedAnotherButton : Another thing happened.

但是,我希望它以类似表格的方式打印,其中所有“列”都正确对齐。例如:

MenuPanel : selectedThisButton    : Something happened.
MenuPanel : selectedAnotherButton : Another thing happened.

如何使第一和第二“列”具有完全相同的宽度/字符数,并在必要时添加空格?它不需要是动态的。将“列”设置为 16 个字符就可以了。

不过,对于像这样简单的事情,我不希望使用任何第三方库。如果可能,不要boost

最佳答案

我会使用 I/O 流而不是 C 风格 printf并且对于打印具有特定宽度的东西(任何类型的),您可以包括 <iomanip>并设置 field width :

some_stream << std::setw(MY_WIDTH) << whatever;

例子:

#include <iostream>
#include <iomanip>

int main()
{
std::cout << std::setw(10) << "hi";
}

输出:

        hi

关于c++ - 用空格格式化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18398401/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com