如何使用 cout 将文本右对齐

How to Align text to the right using cout?

本文关键字:文本 右对齐 cout 何使用      更新时间:2023-10-16

>假设我有一个字符串s,如下所示:

string s="i amngoingntoncuet";

我想在控制台中显示期间将字符串向右对齐。所以我想像这样显示输出:

编辑:最右边的字符应对齐。

                                      i am
                                     going
                                        to
                                      cuet

我尝试了以下代码来显示输出:

cout.width(75);
cout<<s;

但它只能像这样正确对齐第一行:

                                                         i am
going
to
cuet

然后我尝试了这段代码来获取输出:

for(int i=0 ; i<s.size(); i++)
    {
        cout.width(75);
        cout<<s[i];
    }

但是我使用以下代码得到了奇特的输出:

                                                                  i
                                                        a
                                                   m
                                                                  g
                                                             o
                                                        i
                                                   n
                                              g
                                                                  t
                                                             o
                                                                  c
                                                             u
                                                        e
                                                   t

如何获得所需的输出?

您需要

逐行读取s,然后将每行输出右对齐。

#include <iostream>
#include <iomanip>
#include <sstream>
void printRightAlignedLines(const std::string& s, int width)
{
    std::istringstream iss(s); //Create an input string stream from s
    for (std::string line; std::getline(iss, line); ) //then use it like cin
        std::cout << std::setw(width) << line << 'n';
}
int main()
{
    std::string s = "i amngoingntoncuet";
    printRightAlignedLines(s, 75);
}

简单的队列解决方案:

#include<bits/stdc++.h>
using namespace std;
int main()
{
string str;
str = "i amngoingntoncuet";
queue <char> q;
int i;
int len=str.size();
for(i=0; i<len; i++)
{
if(i==len-1)q.push(str[i]);
    if(str[i]=='n' || i==len-1)
    {
        cout.width(75);
        while(!q.empty())
        {
            cout<<q.front();
            q.pop();
        }
        cout<<"n";
    }
    else
        q.push(str[i]);
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(){
    string s="i amngoingntoncuet";
    string p = "";
    for(int i=0;s[i]!='';i++){
        p = p+s[i];
        if(s[i]=='n'){
            cout.width(75);
            cout<<p;
            p = "";
            continue;
        }
        if(s[i+1]==''){
            p = p+'n';
            cout.width(75);
            cout<<p;
            p = "";
        }

    }

}