为什么左对齐在循环的第一次迭代中不起作用?

克里斯托弗马克·李
#include <iostream>

int main(){
       using namespace std;

       string s1("Hello1");
       string s2("Hello2");
       
       for(int i = 0; i < 3; i++){
           
           cout.width(20); cout<<"Some String:"<<left<<s1<<endl;
           cout.width(20); cout<<"Another String:"<<left<<s2<<endl;
           
           cout<<endl;
       }
       return 0;
 }

这是我的代码。据我所知,它应该从屏幕的最左侧打印 s1 和 s2 20 个字符。但是,它打印

        Some String:Hello1
Another String:     Hello2

Some String:        Hello1
Another String:     Hello2

Some String:        Hello1
Another String:     Hello2

根据老师的指示,我正在使用 onlineGDB 进行编译。我犯了什么错误?

稻田

std::left是一个“粘性”操纵器,这意味着您只需设置一次。默认情况下,填充字符串将是右对齐的,这是在应用操纵器"Some String:"之前输出时发生的情况。std::left

请参阅文档,其中指出:

标准流的初始默认值相当于right.

修复你的代码,并稍微整理一下:

#include <iostream>
#include <iomanip>

int main()
{
    using namespace std;

    string s1("Hello1");
    string s2("Hello2");

    cout << left;       
    for(int i = 0; i < 3; i++) {
        cout << setw(20) << "Some String:" << s1 << endl;
        cout << setw(20) << "Another String:" << s2 << endl;
        cout << endl;
    }
    return 0;
}

输出:

Some String:        Hello1
Another String:     Hello2

Some String:        Hello1
Another String:     Hello2

Some String:        Hello1
Another String:     Hello2

请注意,我使用std::setwI/O 操纵器 from<iomanip>而不是调用cout.width(). 这使代码更易于阅读和遵循。

参阅文档std::setw

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C-为什么将语句放入for循环的“增量”部分在第一次迭代中不起作用?

为什么我的Java猜谜游戏在第一次循环后不起作用

为什么我的循环不起作用?只上到第一次打印

为什么android intent第一次不起作用?

为什么gradle bdd命令在第一次运行时不起作用

为什么在第一次输入后连续的fget和sscanf不起作用

如果将attachPatternMatched放在onAfterRendering中,为什么在第一次加载时不起作用?

为什么Jenkinsfile中的每个循环在第一次迭代时停止

为什么循环在第一次迭代中跳过输入?

从数据库检索数据时,next() 的嵌套 while 循环在第一次迭代后不起作用

Javascript.为什么第一次点击不起作用但第二次点击正常?

为什么这个内循环在外循环的第一次迭代中快4倍?

为什么在SearchBack中,如果if(find == A [i])除了第一次就没有给出true?在调试时,除了第一次它显然不起作用

MouseListener 第一次不起作用

输入.on('keydown')第一次不起作用

ExpandableListView setAlpha第一次不起作用

toggleClass()在第一次后不起作用

ajaxSubmit()OnProgress第一次不起作用

slideDown第一次不起作用

第一次解析 JSON 不起作用

搜索第一次点击不起作用

jQuery事件第一次不起作用

jQuery脚本第一次不起作用

查找下一个仅在第一次迭代中起作用

为什么在第一次迭代后就停止了?

为什么此循环在第一次迭代时中断?

为什么在第一次迭代后此循环中断?

为什么Onclick函数仅适用于每个循环的第一次迭代

为什么我的循环只能在第一次迭代中正常工作?