我想在cout中截断一个字符串,
string word = "Very long word";
int i = 1;
cout << word << " " << i;
我希望字符串的输出最多为8个字母
所以在我的情况下,我想要
Very lon 1
而不是:
Very long word 1
我不想使用wget(8)函数,因为它不会将我的单词截断到我想要的大小。我也不希望'word'字符串改变它的值(我只想向用户显示单词的一部分,但在我的变量中保持它完整)
提前致谢
编辑:有人发布了解决方案,它对我有用,现在我无法将他的答案标记为好,因为他在获得投票后删除了他的答案。它就像使用word.substr(0,8)方法一样简单。他有什么理由被贬低?这种方法难以使用吗?答案 0 :(得分:1)
我知道你已经有了解决方案,但我认为这值得一提:是的,你可以简单地使用string::substr
,但通常的做法是使用省略号表示字符串已被截断。< / p>
如果你想要合并,你可以只做一个简单的截断函数。
#include <iostream>
#include <string>
std::string truncate(std::string str, size_t width, bool show_ellipsis=true)
{
if (str.length() > width)
if (show_ellipsis)
return str.substr(0, width) + "...";
else
return str.substr(0, width);
return str;
}
int main()
{
std::string str = "Very long string";
int i = 1;
std::cout << truncate(str, 8) << "\t" << i << std::endl;
std::cout << truncate(str, 8, false) << "\t" << i << std::endl;
return 0;
}
输出结果为:
Very lon... 1
Very lon 1