0

次のように >> 二項演算子をオーバーロードした StringClass クラスが必要です。

StringClass teststring; 
teststring = "test"; 
printf("%s", teststring >> 5);

testtesttesttesttest が出力されます (5 回)。

4

2 に答える 2

0

printfを使用する理由

私はこれを考えることができます:-

void operator >> (const std::string &str,const int n)
{
  for(int i=1;i<=n;i++)
   cout<<str;
}

int main()
{
    std::string str="TEST";
    str>>5;
}
于 2013-08-07T11:13:10.623 に答える
0

あなたのニーズに。私はこれを思いとどまらせますが、ここにあります。

そして、ええ、悪い静的変数です。悪い習慣。誰も気にしない。

#include <string>
#include <cstdio>
using namespace std ;

const char* operator >> (const string &str, const int n) {
    static string ret_string ;
    ret_string.clear() ;
    for (int i=0 ; i<n ; i++) {
        ret_string += str ;
    }
    return ret_string.c_str() ;
}

int main() {
    string str="test" ;
    printf("%s", str>>5) ;
    return 0 ;
}

ご覧のとおり、>>演算子を定義して、必要なものを返すだけです。静的変数に関する警告、リエントラントなし、何とか、何とか、何とか:)希望が役立ちます。

必要に応じて、演算子の定義をクラス内に囲むことができます (クラス用でない場合string)。

** 初期コード構造について P0W に感謝します。

于 2013-08-07T12:19:45.067 に答える