方法重载>>二进制运算符打印字符串

时间:2013-08-07 11:07:05

标签: c++ operator-overloading

我希望StringClass类重载>>二元运算符如下:

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

并且会有 testtesttesttesttest 印刷(五次。)

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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的初始代码结构。