2017-01-20 49 views
-5

我有這樣的事情:(「今天是一個美好的一天,死亡\ n」),它應該看起來像:今天是一個美好的一天死去。不知道應該用來獲取它的語法。這是我正在編寫的一個程序的一個功能。如上所述,它應該從主標記s中提取文本。我當前的代碼是:如何從C++中的括號中獲取文本?

std::string parenthetical(const std::string& s){ 
    const string foo; 
    const auto start = find(foo.cbegin(), foo.cend(), '('); 
    const auto finish = find_if(start, foo.cend(), [](char i) { 
     if (i == '(') { 
      count++; 
     }else if (i == ')') { 
      count--; 
     }return count <= 0;}); 
    return 0; 
} 

我無法讓編譯器接受計數。任何想法將不勝感激。

+0

我試圖用一個開關while循環。我認爲必須有一個更簡單的方法來做到這一點。 – brasel

+0

請發佈您的代碼,如果我們不知道您到目前爲止所嘗試的內容,我們無法幫助您。有關如何正確提供示例的信息,請參閱https://stackoverflow.com/help/mcve。 –

回答

0

這是一個簡單的方法來做你想做的事情。 (什麼我可以從你的問題收集基礎)

#include <string> 
#include <algorithm> 
#include <iostream> 

int main(int argc, const char * argv[]) { 

    std::string str = "(\"Today is a good day to die.\")"; 
    std::cout<<str<<std::endl; 
    str.erase(std::remove_if(str.begin(), 
          str.end(), 
          [](char x){ return (x == '(' || x==')');}), 
       str.end()); 
    std::cout<<str<<std::endl; 
    return 0; 
} 

參考見HERE

編輯:

碼的範圍內試試這個您提供

std::string parenthetical(const std::string& s){ 
    std::string str(s); 
    str.erase(std::remove_if(str.begin(), 
          str.end(), 
          [](char x){ return (x == '(' || x==')');}), 
       str.end()); 
    return 0; 
} 
+0

謝謝。這看起來明顯優於:而(s.good()) \t { \t \t開關(s.get()) \t \t { \t \t情況下 '(':++ S;打破; \t \t情況下')':--s;打破; \t \t case'\ n':return s == 0; \t \t} \t \t \t 如果\t(S <0) \t \t { \t \t \t而(s.good()) \t \t \t如果(s.get()== '\ n') \t \t \t \t return false; \t \t} – brasel

+0

如果您發現我的答案足夠了,請將其標記爲您接受的答案。 –

+0

這行:s.erase(std :: remove_if(s.begin(),s.end(),[](char s){return(s =='('|| s ==')'); }),s.end());這段時間給了我一個超載的時間:s.erase關於如何擺脫它的任何想法? – brasel

相關問題