避免获得子串?

时间:2011-03-16 21:48:16

标签: c++ string

我有一个情况,我有一个std :: string,我只需要字符x到x + y,我认为如果我可以某种方式做某事(char *)& string [x],但问题是我的所有函数都期望一个以NULL结尾的字符串。

我该怎么办?

由于

5 个答案:

答案 0 :(得分:3)

没什么好做的。我能想到的唯一技巧是暂时将s[x+y+1]设置为0,传递&s[x],然后恢复角色。但是,如果您确定这将合理地提高性能并且必须提升,那么您应该求助于此

答案 1 :(得分:1)

什么都没有(如果你需要的字符串在中间)。速度差异将是微不足道的,除非它完成了很多(几百万)

答案 2 :(得分:0)

使用:

string.c_str() + x;

这假定您的函数采用const char *

如果您需要实际的0终止,则必须复制。

答案 3 :(得分:0)

你别无选择。如果不复制或修改原始字符串,则无法创建以null结尾的子字符串。

你说你“认为它会加快速度”。你有没有测量过?

答案 4 :(得分:0)

可以用NUL覆盖&string[x+y+1],并将&string[x]传递给你的函数。如果您之后需要再次使用整个字符串,可以将其保存一段时间,并在需要时将其恢复。