すでに解決策があることは知っていますが、これは言及する価値があると思いました。はい、単純に を使用できますがstring::substr
、省略記号を使用して文字列が切り捨てられたことを示すのが一般的です。
それを組み込みたい場合は、単純な切り捨て関数を作成できます。
#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