2015-02-11 22 views
0

我有一个字符串作为"Bla bla *.h *.cpp *.png"。现在我想把所有的文件名都放在向量中。所以我的载体将有关于字符串中的操作

vec[0] = "*.h"; 
vec[1] = "*.cpp"; 
vec[2] = "*.png"; 

所以下面是我写的。 P:可能有其他更好的实现方法。但我不知何故想按照我上面提到的方式去做。此外,我需要确保即使我找到空白空间的终点,它应该始终在整个文本之后。我不想最终找到文字之间存在的空白空间bla bla。是否有可能?

+0

如果您从已经找到它的位置开始搜索某个东西,那么它会再次给您相同的位置。 – 2015-02-11 21:03:28

回答

1

你的循环没有任何意义。对于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 
     } 
    } 
} 
+0

我在'iss'上得到了'不完整的类型不允许'的变形。 – tanz 2015-02-11 21:14:15

+0

@tanz加入'#include ' – Barry 2015-02-11 21:14:40

+0

你太棒了! – tanz 2015-02-11 21:27:59