如何使用 cout 将文本右对齐
How to Align text to the right using cout?
>假设我有一个字符串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 = "";
}
}
}
相关文章:
- 如何创建一个QTableWidgetItem,用长文本右对齐,左边有省略号
- 如何减少代码的运行时间以对齐文本?
- 整数数据如何以位为单位存储在内存中?不是右对齐吗?
- Win API对齐按钮上的文本
- 如何在Imgui列中右对齐文本?
- C++ 如何格式化包含可变整数的文本行,使其在给定宽度内右对齐?
- 如何使用X11中的XFT字体在窗口中央对齐文本
- 右对齐三角形的间距
- 在矩形形状的中心对齐文本
- 如何使用 cout 将文本右对齐
- 在输出输入文本时对齐输入的文本
- 括号对齐样式:在右括号之前中断
- 如何在 CDateTimeCtrl 中居中对齐文本
- C 输出中的总右对齐
- 构建 QPushButton 与 QIcon 左对齐和文本中心对齐
- c++:右对齐的字段输出
- Html文本作为工具提示,向右对齐
- 如何为第一个组件右对齐
- Emacs 右对齐')'
- 第一个带有double的集合是左对齐的,随后的都是右对齐的