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