【问题标题】:Initialising a std::string from a character从一个字符初始化一个 std::string
【发布时间】:2009-08-03 02:53:14
【问题描述】:

似乎没有标准的构造函数,所以我采取了以下措施

void myMethod(char delimiter = ',')
{
    string delimiterString = 'x';
    delimiterString[0] = delimiter;
    // use string version ...
}

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: c++ string initialization char


    【解决方案1】:

    std::string 有一个构造函数可以为你做这件事:

    std::string delimiterString(1, delimiter);
    

    1 是size_t,表示char 参数的重复次数。

    【讨论】:

    • 没有必要更改签名来约束某些东西 - &delimiter 是一个 char * ,它可以自动转换为 const char * 。 const_cast 只需要删除 constness。
    • &delimiter 将不起作用,因为生成的 char* 不会以空值终止。
    • 但是可以使用迭代器构造函数 - std::string s(&delimiter, &delimiter + 1)
    • 哇,我今晚完全失败了。在我的辩护中,我更喜欢引用任何涉及指针或地址运算符的东西,但这对我来说是一个真正的新手错误。不过,迭代器构造函数示例被有趣地覆盖了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 2020-07-11
    • 1970-01-01
    相关资源
    最近更新 更多