0

私の文字列は、350 文字の長さです。左右の余白が同じになるように、コンソールの中央に配置する必要があります。

これを setw() してみると、こんな感じで出力されます(最初だけ余白あり)。

          aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

私が達成しようとしていること:

             aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
             aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
             aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

私のコードは次のようになります(左側のみ、2番目のものはまだ試していません):

out << left << setw(20) << " " << longString << endl;

誰かが私の目標を達成する方法を知っていれば、私は感謝します!

4

1 に答える 1

0

線幅がわかっている場合は、かなり単純です。

#include <iostream>
#include <string>
#include <iomanip>

int main(){
    std::string longstring = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    int margin = 5;
    int linewidth = 10;
    int pos = 0;
    while (pos < longstring.size()){
        std::cout << std::setw(linewidth) 
                  << longstring.substr(pos,linewidth-margin) << std::endl;
        pos+= linewidth-margin;
    }
}
于 2016-06-03T19:45:39.970 に答える