C++ 如何使用cout将文本向右对齐?
假设我有一个字符串s,如下所示:C++ 如何使用cout将文本向右对齐?,c++,string,output,cout,right-align,C++,String,Output,Cout,Right Align,假设我有一个字符串s,如下所示: string s="i am\ngoing\nto\ncuet"; 我想在console中显示时将字符串向右对齐。所以我想这样显示输出: i am going to cuet 编辑:最右边的字符应该对齐 i am
string s="i am\ngoing\nto\ncuet";
我想在console中显示时将字符串向右对齐。所以我想这样显示输出:
i am
going
to
cuet
编辑:最右边的字符应该对齐
i am
going
to
cuet
我尝试了以下代码来显示输出:
cout.width(75);
cout<<s;
for(int i=0 ; i<s.size(); i++)
{
cout.width(75);
cout<<s[i];
}
然后我尝试了以下代码以获得输出:
cout.width(75);
cout<<s;
for(int i=0 ; i<s.size(); i++)
{
cout.width(75);
cout<<s[i];
}
如何获得所需的输出?您需要逐行阅读
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 am\ngoing\nto\ncuet";
printRightAlignedLines(s, 75);
}
#包括
#包括
#包括
void printRightAlignedLines(常量std::string&s,int-width)
{
std::istringstream iss(s);//从s创建输入字符串流
for(std::string-line;std::getline(iss,line);)//然后像cin一样使用它
std::cout#包括
使用名称空间std;
int main(){
string s=“我正在\n继续\n继续\n继续”;
字符串p=“”;
对于(int i=0;s[i]!='\0';i++){
p=p+s[i];
如果(s[i]='\n'){
库特宽度(75);
库特
简单的队列解决方案:
#包括
使用名称空间std;
int main()
{
字符串str;
str=“我正在\n继续\n继续”;
队列q;
int i;
int len=str.size();
对于(i=0;它不是文本向右对齐的,您描述的文本也不是向右对齐的。向右对齐的文本的最右边字符对齐。您需要处理行,因此您的代码需要知道包含多行的字符串,并分别显式处理每行。它不是,也不是。@n.m.我如何处理合法地处理每一行?你能举个例子吗?有用的阅读:,并检查这个
#include<bits/stdc++.h>
using namespace std;
int main()
{
string str;
str = "i am\ngoing\nto\ncuet";
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;
}