是否有一个 std::string 函数可以将空格附加到给定的缩进级别

Posted

技术标签:

【中文标题】是否有一个 std::string 函数可以将空格附加到给定的缩进级别【英文标题】:Is there an std::string function to append white space up until a given indentation level 【发布时间】:2018-04-16 05:24:37 【问题描述】:

我正在尝试获得以下效果:

This is a message            []
This is a different message  []
Short                        []
LOOOOOOOOOOOOOOOOOOOOOOOOOONG[]

有没有办法创建一个字符串,如果可能的话,给定的参数总是从给定的缩进级别开始?

例如string(indentation level, message1, message 2)

【问题讨论】:

这是一个非常具体的用例。不太可能存在这样的内置函数。你可以编写一个免费的函数来做这件事。 先找到最大长度然后使用来自<iomanip>std::setw(n) 修饰符要容易得多。 在不知道LOOOOOOOOOOOOOOOOOOOOOOOOOONG 有多长的情况下,您无法对齐[] 这是为了对齐输出到屏幕,还是需要修改字符串本身? 一旦你知道长度,还有一个std::string 构造函数获取字符串的长度和你想要重复的字符。我不确定那个或std::setw 版本是否更干净。 【参考方案1】:

标准库中不存在类似的东西(据我所知),但您应该能够很容易地编写一些东西来实现这一点。

std::string IndentedString(int n, std::string message) 

    // Construct string of 'n - message.length' spaces
    std::string indent(n - message.length, ' ');

    return message + indent;

【讨论】:

以上是关于是否有一个 std::string 函数可以将空格附加到给定的缩进级别的主要内容,如果未能解决你的问题,请参考以下文章

如何知道std :: string是否正确编码?

如何将 std::map 作为默认构造函数参数传递

C++如何将string按空格分割?

std::string 操作:空格、“换行符转义 '\'”和注释 #

将 std::string 的向量转换为 char***

我可以在 IOCP WSARecv 函数中使用 std::string 吗?