我有一个情况,我有一个std :: string,我只需要字符x到x + y,我认为如果我可以某种方式做某事(char *)& string [x],但问题是我的所有函数都期望一个以NULL结尾的字符串。
我该怎么办?
由于
答案 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]
传递给你的函数。如果您之后需要再次使用整个字符串,可以将其保存一段时间,并在需要时将其恢复。