假设我有一个字符串“text”,插入位置“caret”,然后想要查找当前单词(由空格分隔)。从字符数组中获取当前单词的最有效方法
我现在这样做的方式似乎效率低下,我想知道是否有人有这样做的有效方式?
const char* text;
int caret;
int initpos;
int start;
int count = 0;
char word[256];
// text and caret values assigned here.
initpos = caret;
while(caret > 0 && text[caret] != ' ') // get start
{
caret--;
count++;
}
start = caret;
caret = initpos;
while(text[caret] && text[caret] != ' ') // get end
{
caret++;
count++;
}
word = strsub(text, start, count);
该代码不能编译,你不能分配给一个数组名。 – unwind 2011-03-04 11:15:54
在我看来,很难打败这些代码(假设@ unwind的评论,以及未初始化的“caret”,并且从数组边界开始行走只是尝试将问题修剪成可轻松发布和讨论的事例) - 你必须在每个角色之前和之后看看每个角色,找到一个比个人角色检查更快找到空间的技巧似乎不太可能。 – sarnold 2011-03-04 11:20:53
也许你还想考虑水平制表符等除了空格。 – Flinsch 2011-03-04 11:23:04