std :: string中的两个重载函数引起了我的注意:
string& append(const string& str, size_t pos, size_t n);
string& append(const char* s, size_t n);
我很好奇为什么string :: append()的char *版本没有提供额外的参数size_t pos
,如下所示:
string& append(const char* s, size_t pos, size_t n);
对于其他两个功能,情况也是一样的:
int compare(size_t pos1, size_t n1, const string& str, size_t pos2, size_t n2) const;
int compare(size_t pos1, size_t n1, const char* s, size_t n2) const;
string& replace(size_t pos1, size_t n1, const string& str, size_t pos2, size_t n2);
string& replace(size_t pos1, size_t n1, const char* s, size_t n2);
这些函数的char *版本缺少参数size_t pos2
,它不像字符串&对方。我的问题如下:
size_t pos
?感谢您阅读!
答案 0 :(得分:4)
因为您只需将pos
添加到s
:
str.append(ptr + pos, len);
这并不是说它不是一个好的速记,但它们(通常)只想最小化地添加必要的功能,而不是简单的包装类型。
答案 1 :(得分:2)
也许你只能做str.append(s+pos, n);