传递字符串Argument,从文件中读取
Passing string Argument, read from a file
我正在尝试在文本中找到regex
模式。让我们称之为文本:原始文本。以下是patternFinder()
程序的代码:
vector <pair <long,long> >CaddressParser::patternFinder(string pattern)
{
string m_text1=m_text;
int begin =0;
int end=0;
smatch m;
regex e (pattern);
vector<pair<long, long>> indices;
if(std::regex_search(m_text1,m,e))
{
begin=m.position();
end=m.position()+m.length()-1;
m_text1 = m.suffix().str();
indices.push_back(make_pair(begin,end));
while(end<m_length&&std::regex_search(m_text1,m,e))
{
begin=end+m.prefix().length()+1;
end=end+m.prefix().length()+m.length();
indices.push_back(make_pair(begin,end));
m_text1 = m.suffix().str();
}
return indices;
}
else return indices;
}
我有以下regular Expression
:
"\b[0-9]{3}\b.*(Street).*[0-9]{5}"
开头提到的原文是:
- 2013年1月10日700 West Market Street OH 35611asdh
并且只有粗体文本应该与正则表达式匹配。现在的问题是,当regex作为从文本文件中读取的字符串传递时,patternFinder()
无法识别模式。尽管当直接字符串(与文本文件中的字符串相同)作为参数传递给patternFinder()
时,它仍然有效。这个问题从哪里来?
以下是我的fileReader()
函数的代码,我认为这与提及无关:
string CaddressParser::fileReader(string fileName)
{
string text;
FILE *fin;
fin=fopen(fileName.c_str(),"rb" );
int length=getLength(fileName);
char *buffer= new char[length];
fread(buffer,length,1,fin);
buffer[length]=' ';
text =string(buffer);
fclose(fin);
return text;
}
请注意,将正则表达式直接写入C++代码和从文件中读取正则表达式时存在明显的语法差异。
在C++中,反斜杠字符具有转义语义,因此要将文字反斜杠放入字符串文字中,必须使用反斜杠对其本身进行转义。因此,要在内存中获得一个两个字符的字符串b
,您必须使用字符串文字"\b"
。C++编译器将这两个反斜杠解释为要存储在文字中的单个反斜杠字符。换句话说,strlen("\b")
是2。
另一方面,文本文件的内容由程序读取,而C++编译器从不处理。因此,要将两个字符和
b
写入从文件读取的字符串中,只需将两个字符串b
写入文件即可。
问题可能出现在从文件中读取字符串的函数中。将字符串打印为read,并确保正确读取正则表达式。
问题出在这两行
buffer[length]="\0"
text=字符串(缓冲区);
buffer[length]应该是buffer[ength-1]
相关文章:
- 正在将csv文件读取为双精度矢量
- 将从格式化文本文件读取的文本数据存储到链表
- C++ 读取文件读取文件不正确
- 使用对象文件读取三角形数据网格
- 如何减慢从 BVH 文件读取的 opengl 动画?
- 从文件读取,并写入函数C++中的数组
- 从对象C++中的文件读取内容时出现分段错误
- 从文件读取并通过矢量输出到控制台
- 尝试将字符串从文件读取到无符号字符向量中
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 简化文件读取的函数
- 如何将逗号分隔的文件读取为 2D int 数组?
- 在 c++ 中将数据从文件读取到队列中
- 'std::wstring_convert'尽可能多地转换(从 UTF8 文件读取块)
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- 文件读取C++包括空格键
- 从文件读取时未将值推回矢量
- 从文件 C++ 读取时的无限循环
- 从同一文件读取和写入?
- 从.txt文件读取到C++中的双精度向量