2015-02-11 49 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