7

cout で文字列を切り捨てたい、

string word = "Very long word";
int i = 1;
cout << word << " " << i;

文字列の出力として最大8文字にしたい

だから私の場合、私は持っていたい

Very lon 1

それ以外の :

Very long word 1

残念ながら、単語を必要なサイズに切り捨てないため、wget(8) 関数は使用したくありません。また、「単語」文字列の値を変更したくありません(単語の一部をユーザーに表示したいだけですが、変数に完全に入れておきます)

4

2 に答える 2

4

すでに解決策があることは知っていますが、これは言及する価値があると思いました。はい、単純に を使用できますが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
于 2013-10-25T13:09:43.490 に答える