0

強制的setwに切り捨てる方法はありますか?

出力を取得したいとします。

何とか何とかブリールブ
何とか何とかブリーブリー

これを機能させる方法はありますか:

string foo{"bu blah blah blee le"};

cout << setw(foo.size() - 3) << foo.data() + 3 << setw(foo.size() - 3) << foo << endl;
4

2 に答える 2

1

直接ではありません。

フォーマット指定子ではprintf、精度引数を使用して、文字列の最大文字数を指定できます。ただし、C++ では、部分文字列演算子を使用します。

std::cout << foo.substr(3) << foo.substr(0, foo.size() - 3) << std::endl;

(もちろん、最初は を使用することもできますfoo.c_str() + 3。)

于 2014-12-09T13:59:01.763 に答える
1

No, not really.

You can switch to unformatted output for this example, though:

assert(foo.size() > 3);
cout.write(&foo[3], foo.size() - 3);
cout.write(&foo[0], foo.size() - 3);
于 2014-12-09T13:51:33.667 に答える