我有一個字符串作爲"Bla bla *.h *.cpp *.png"
。現在我想把所有的文件名都放在向量中。所以我的載體將有關於字符串中的操作
vec[0] = "*.h";
vec[1] = "*.cpp";
vec[2] = "*.png";
所以下面是我寫的。 P:可能有其他更好的實現方法。但我不知何故想按照我上面提到的方式去做。此外,我需要確保即使我找到空白空間的終點,它應該始終在整個文本之後。我不想最終找到文字之間存在的空白空間bla bla
。是否有可能?
我有一個字符串作爲"Bla bla *.h *.cpp *.png"
。現在我想把所有的文件名都放在向量中。所以我的載體將有關於字符串中的操作
vec[0] = "*.h";
vec[1] = "*.cpp";
vec[2] = "*.png";
所以下面是我寫的。 P:可能有其他更好的實現方法。但我不知何故想按照我上面提到的方式去做。此外,我需要確保即使我找到空白空間的終點,它應該始終在整個文本之後。我不想最終找到文字之間存在的空白空間bla bla
。是否有可能?
你的循環沒有任何意義。對於b
中的每個字符,您的邏輯都完成一次,但邏輯本身不取決於i
。所以無論你的循環體是什麼,只會將相同的字符串b.length()
加到patternVector
。
你想要做的就是利用你所知道的關於b
的知識:它是一堆詞,空格分開,其中一些以"*."
開頭。所以讓我們這樣做吧:
void FileMgr::parseCmdLineForTextSearch(const std::string& b)
// don't need a copy ^^^^^^^^^^^^^^^^^^
{
std::istringstream iss(b);
std::string word;
while (iss >> word) { // for each word in b
if (word.find("*.") == 0) { // if it starts with *.
patternVector.push_back(word); // add it
}
}
}
如果您從已經找到它的位置開始搜索某個東西,那麼它會再次給您相同的位置。 – 2015-02-11 21:03:28