ifstream infile("somefile.txt");
char letter;
infile >> noskipws >> letter;
string word;
word = letter;
while(regex_match(word, regex("[A-Za-z_][A-Za-z0-9_]*", regex_constants::basic))){
infile >> letter;
word += letter;
}
if(regex_match(word, regex("[A-Za-z_][A-Za-z0-9_]*.", regex_constants::basic))){
//Do stuff
}
當我運行這段代碼和GDB看它正則表達式驅動,while循環將是infile
是餵養letter
在文本文件中執行恰好一次,無論是文字。然後,它會跳過if語句,因爲if語句顯然返回false。此功能的每次運行都應該有word
將整個單詞保存在infile
的當前位置。我的正則表達式失敗了?或者是別的什麼?while循環不循環正常
舉例說明:僅包含單詞「文字失敗」的文本文件將在函數結尾處包含「wo」。
我真的不明白你想要做什麼,但在有些觀點需要消耗空間,否則'while'循環將匹配第一個單詞,然後停止匹配,因爲下一部分以空格(或標點符號或非[A-Za-z_])開頭。並且在'if'中的示例代碼中,有一個變量'recognised',它在任何地方都沒有聲明... –
@ mathematical.coffee這正是循環應該如何操作的。相反,「單詞」一次不會超過2個字符,它們將是任何字符。 – MowDownJoe