使用cout和字符串格式化列

磨坊主

晚上好!我希望我可以在cout语句中格式化字符串方面请您帮忙。

目标是使所有列的最大宽度向左对齐colWidth

在下面的输出中,您将注意到列宽按预期执行,除非字符串长度小于列宽(与库存项目3一样)。如果我更换string(strArray[i].begin(), strArray[i].begin() + colWidth)strArray[i]时,会出现完全相反,其中的任何字符串元素都列在下面最大的罚款,但别的溢出,并推动出来的文字。

#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <cstdlib>
using namespace std;

int main()
{
    string strArray[20] = {"mumblemumble1","mumblemumblemumble2","mumble3","mumblemumblemumblemumble4","mumblemumblemumble5","mumble6","mumblemumblemumblemumble7","mumblemumblemumble8","mumble9","mumblemumblemumblemumble10","mumblemumble11","mumblemumblemumble12","mumble13","mumblemumblemumblemumble14","mumblemumblemumble15","mumblemumble16","mumblemumblemumble17","mumble18","mumblemumblemumblemumble19","mumblemumblemumble20"};
    int cols = 2;       // The number of columns to display
    int colWidth = 10;  // Width allowed for title output
    int colCount = 0;   // Used with mod (%) to provide a new line when needed

    cout << endl << endl << "Number of titles in inventory: " << 20;
    cout << endl << endl;

    for(int i = 0; i < 20; i++)
    {
        cout << setw(4) << right << (i + 1) << ") " << left << setw(colWidth) << string(strArray[i].begin(),strArray[i].begin() + colWidth);
        if ((i+1) % cols == 0)
            cout << endl;
    }

    return 1;
}

产生以下输出:

Number of titles in inventory: 20

   1) mumblemumb   2) mumblemumb
   3) mumble3   4) mumblemumb
   5) mumblemumb   6) mumble6
   7) mumblemumb   8) mumblemumb
   9) mumble9  10) mumblemumb
  11) mumblemumb  12) mumblemumb
  13) mumble13  14) mumblemumb
  15) mumblemumb  16) mumblemumb
  17) mumblemumb  18) mumble18
  19) mumblemumb  20) mumblemumb
姆拉德森

string(strArray[i].begin(),strArray[i].begin() + colWidth)当字符串少于10个字符时(例如'mumble3'),此代码将引发异常。

将您的for循环更改为此:

for (int i = 0; i < 20; i++)
{
    string str = strArray[i];
    while (str.size() < colWidth) {
        str = str + " ";
    }
    cout << setw(4) << right << (i + 1) << ") " << left << setw(colWidth) << string(str.begin(), str.begin() + colWidth);
    if ((i + 1) % cols == 0)
        cout << endl;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用字符串格式化python的列

来自分类Dev

时间格式化和从字符串转换

来自分类Dev

字符串格式化和传递

来自分类Dev

同时查询和格式化字符串

来自分类Dev

格式化日期和时间字符串

来自分类Dev

`%d` 和 `%y` 在格式化字符串中

来自分类Dev

python字符串格式化行中的列

来自分类Dev

使用相同的insert语句将字符串值和格式化的字符串插入表中

来自分类Dev

在Python中使用逗号,串联和字符串格式化程序之间的区别

来自分类Dev

使用Python和Tkinter进行字符串格式化

来自分类Dev

使用Python的exec()函数和格式化的字符串?

来自分类Dev

使用.format和变量的python字符串格式化

来自分类Dev

使用PowerShell解析和重新格式化日期字符串

来自分类Dev

使用Python的exec()函数和格式化的字符串?

来自分类Dev

不使用REGEXP_REPLACE和PL / SQL格式化UUID字符串

来自分类Dev

使用自定义字符串透视和格式化结果集

来自分类Dev

如何使用双引号和单引号格式化python字符串

来自分类Dev

使用子字符串格式化JavaScript日期

来自分类Dev

使用字符串变量格式化timedelta

来自分类Dev

使用Java从格式化的字符串中提取

来自分类Dev

尝试使用Servlet格式化日期字符串

来自分类Dev

使用sprintf格式化字符串

来自分类Dev

解析使用HashMap的格式化字符串

来自分类Dev

使用DateFormatter格式化字符串日期

来自分类Dev

使用模板格式化C ++字符串

来自分类Dev

在Linux上使用sed格式化字符串

来自分类Dev

使用sed重新格式化字符串

来自分类Dev

如何使用javascript格式化日期字符串

来自分类Dev

如何使用R中其他列的值格式化字符串

Related 相关文章

热门标签

归档