我知道x += y
相当于x = x + y
。是否存在等于x = y + x
的操作。例如,使用此操作合并x
和y
,其中x
和y
为"1"
和"2"
,将{{1}等于x
,而不是"21"
?
实现字符串前置的最简单方法是什么?
答案 0 :(得分:2)
显然,问题不在于定义运算符,因为它是关于将一个字符串插入另一个字符串。在这种情况下,std::string
有一大堆insert
member functions用于执行此操作。
具体来说,要在字符串y
的前面插入字符串x
,您可以使用x.insert(0, y);
答案 1 :(得分:1)
通过使用帮助程序类型,您可以将 .state('tabs.groups', {
url: '/groups',
views: {
'groups-tab': {
templateUrl: 'views/groups/groups.html',
controller: 'GroupsController'
}
}
})
.state('creategroup', {
url: '/creategroup',
templateUrl: 'views/groups/creategroup.html',
controller: 'GroupsController'
})
.state('addmembers', {
url: '/addmembers',
templateUrl: 'views/groups/addmembers.html',
controller: 'GroupsController',
params: {
groupkey: null,
groupname: null
}
})
和x
作为现有类型y
进行以下工作:
std::string
相信这个"命名运营商"方法转到Yakk,您可以在https://github.com/klmr/named-operator找到与实施示例更完整的讨论。
答案 2 :(得分:1)
当然,创建自己的类型和重载运算符+=
。即:
struct MyString
{
std::string _string;
MyString(const std::string & str) : _string(str) {}
MyString(std::string && str) : _string(std::move(str)) { }
void operator+=(const MyString & rhs)
{
_string = rhs._string + _string;
}
};
int main()
{
MyString abc("abc");
MyString xyz("xyz");
abc += xyz;
std::cout << abc._string;
}