【发布时间】:2014-05-29 20:44:18
【问题描述】:
我最近从 C 切换到 OOP 语言 - C++ 和 Python 3.4
我注意到Python 有很多东西是C++ 无法比拟的
其中之一是易于调用函数。
所以我决定以某种方式实现在 C++ 中使用 STL 进行函数调用的 python 方式。
我从“字符串”类开始。
在 Python 中,我可以这样做:
str="hello world "
str.strip().split()
首先,去掉字符串末尾的尾随空格,然后在空格处将字符串分成两半
现在是 整洁
我希望能够以这种方式调用函数,即object.func1().func2().func3() 等等
因为我对 stl 类“字符串”一无所知,所以我从自己制作的类“MYstring”开始
class MYstring
{
string str;
public:
//constructor
MYstring(string str)
{ setter(str); }
//setter function
MYstring& setter( string str )
{ this->str=str;
return *this;
}
//getter_str function
string getter_str()
{ return str;
}
unsigned int getter_size()
{ return str.size();
}
//modifier function(s)
MYstring& split(char x='\0')
{ string temp="";
for(int i=0; i<str.size(); i++)
{ if(this->str[i-1] == x)
break;
temp += str[i];
}
this->str=temp;
return *this;
}
MYstring& strip()
{
for(int i=this->str.size() - 1; i>=0; i--)
{ if(this->str[i] == ' ')
this->str.erase(i);
else if(isalnum(this->str[i]))
break;
}
return *this;
}
};
为了测试类及其成员函数,我使用了以下main()
int main()
{ //take a user-defined string-type input
string input;
cout<<"Enter a string: ";
getline(cin,input);
// create an object of class 'MYstring'
// and initialise it with the input given by the user
MYstring obj(input);
//take the character at which the string must be split
cout<<"\nEnter character to split the string at: ";
char x;
cin>>x;
//display original input
cout<<"\n\nThe user entered: "<<obj.getter_str();
cout<<"\nSize = "<<obj.getter_size();
obj.strip().split(x);// <--- python style function call
cout<<"\n\nAfter STRIP and SPLIT: "<<obj.getter_str();
cout<<"\nSize = "<<obj.getter_size();
return 0;
}
而且有效
所以,最后这是我的问题:
如何为C++ STL string class 创建和使用相同的split 和strip 函数?
是否可以在 STL 中使用我们自己创建的方法?
欢迎提出任何建议。
【问题讨论】:
标签: c++ function python-3.x