【问题标题】:string::insert at end of stringstring::insert 在字符串末尾
【发布时间】:2011-06-08 20:56:20
【问题描述】:

以下两行代码在 Visual Studio 2005 中做同样的事情:

myString.insert(myString.size(),1,myNewChar);

myString.append(1,myNewChar);

第一个应该抛出 out_of_range 异常还是这是正确的行为?

【问题讨论】:

    标签: c++ language-lawyer


    【解决方案1】:

    这是正确的行为——您传递的索引是新字符插入点之后位置的索引,而不是之前。事实上,C++03 标准中明确表示(§21.3.5.4/2):

    需要pos1 <= size()pos2 <= str.size()

    (其中pos1 是您传递的索引,pos2 == npos 在您调用的重载中)- 请注意它是<= 而不是<

    【讨论】:

    • 当对索引感到困惑时,请始终考虑琐碎的情况(字符串为零或一个元素)以及在这种情况下您希望如何插入。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多