假設我有一個字符串「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