是否存在类似于`+ =`的字符串操作但是添加到字符串的前面?

时间:2017-01-13 16:35:59

标签: c++ string prepend

我知道x += y相当于x = x + y。是否存在等于x = y + x的操作。例如,使用此操作合并xy,其中xy"1""2",将{{1}等于x,而不是"21"

实现字符串前置的最简单方法是什么?

3 个答案:

答案 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;
}