我有一个字符串作为"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