std::string::erase(0)
的行为是否在空字符串上定义良好。因为cppreference说:
Removes count characters starting at index.
但是对于空字符串,索引0处的字符不存在。
答案 0 :(得分:9)
似乎没问题,因为字符串的大小为0
:
21.4.6.5 basic_string :: erase [string :: erase]
basic_string<charT,traits,Allocator>& erase(size_type pos = 0, size_type n = npos);
1需要:
pos <= size()
2抛出:out_of_range如果
pos > size()
。
答案 1 :(得分:4)
在std::string::erase
的同一页面上,我发现了以下几行:
<强>例外强>
1)如果index > size()
,则std :: out_of_range 2-3)(无)