首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用setw截断

用setw截断
EN

Stack Overflow用户
提问于 2014-12-09 13:43:32
回答 2查看 1.5K关注 0票数 0

有什么方法可以强制setw截断吗?

假设我想得到输出:

诸如此类的 无谓的流血

有什么办法可以让这件事:

代码语言:javascript
复制
string foo{"bu blah blah blee le"};

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

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-09 13:51:33

不,不是真的。

但是,您可以切换到此示例的未格式化输出:

代码语言:javascript
复制
assert(foo.size() > 3);
cout.write(&foo[3], foo.size() - 3);
cout.write(&foo[0], foo.size() - 3);
票数 1
EN

Stack Overflow用户

发布于 2014-12-09 13:59:01

不是直接的。

printf格式说明符中,可以使用精度参数来指定字符串中的最大字符数。然而,在C++中,您使用子字符串运算符:

代码语言:javascript
复制
std::cout << foo.substr(3) << foo.substr(0, foo.size() - 3) << std::endl;

(当然,对于第一个问题,您也可以使用foo.c_str() + 3。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27380376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档