C :SETW()仅在第一行,循环中工作



我试图通过文本文件解析,并通过使用setW()将内容输出到控制台上。我的问题是,只有第一行的格式正确,其余的默认为左侧。

while (test) 
{
    cout << setw(20) << right;
    string menu;
    price = 0;
    getline(test, menu, ',');
    test >> price;
    cout << setw(20) << right << menu;;
    if (price)
        cout << right << setw(10) << price;

}

我的目标是使输出与右侧最长的单词(长度为20个空间)保持一致,但是我的输出最终以这样的方式出现:

           WordThatAlignsRight
notAligning
my longest sentence goal align
notAligning

我希望每个句子在整个循环中正确对齐20个空间。感谢任何帮助,谢谢!

std::setw仅在下一个元素上起作用,之后没有效果。有关更多信息,请点击此链接。

链接网站上的代码将非常清楚地向您显示std::setw的工作原理。

#include <sstream>
#include <iostream>
#include <iomanip>
int main()
{
    std::cout << "no setw:" << 42 << 'n'
              << "setw(6):" << std::setw(6) << 42 << 'n'
              << "setw(6), several elements: " << 89 << std::setw(6) << 12 << 34 << 'n';
    std::istringstream is("hello, world");
    char arr[10];
    is >> std::setw(6) >> arr;
    std::cout << "Input from "" << is.str() << "" with setw(6) gave ""
              << arr << ""n";
}

输出:

no setw:42
setw(6):    42
setw(6), several elements: 89    1234
Input from "hello, world" with setw(6) gave "hello"

相关内容

  • 没有找到相关文章

最新更新