文件流提取
文本文件里有这样一段
a=33,44,55
用什么语句才能将a 33 44 55读出来并分别提取出来
[解决办法]
a=33,44,55如果自成一行,先fgets出来,放到一个buf里,再对buf进行字符操作,获取33 44 55三个串后,再转换成数字~~
呃,暂时只想到这样。
[解决办法]
用正则表达式吧,先将文件读取到string中,然后使用regex::match提取出来
读取到string的函数:
void load_file(std::string& s, std::istream& is)
{
s.erase();
s.reserve(is.rdbuf()-> in_avail());
char c;
while(is.get(c))
{
if(s.capacity() == s.size())
s.reserve(s.capacity() * 3);
s.append(1, c);
}
}
[解决办法]
int main()
{
ifstream fdata( "A.TXT ",ios::in);
char *source1=NULL;
char *result=NULL;
char delim1[]= "= ";
char delim2[]= ", ";
string content;
getline(fdata,content);
source1=const_cast <char*> ( content.c_str() );
result=strtok(source1, delim1);
while(result!=NULL)
{
cout < <result < <endl;
result=strtok(NULL, delim2);
}
fdata.close();
return 0;
}
a
33
44
55
请按任意键继续. . .
[解决办法]
用AfxExtractSubString分隔字符串。
CStdioFile file;
file.open( "文件名 ");
file.readstring(buf); //按行读取文件
AfxExtractSubString(temp,buf,i, ', '); //i:想获得的字符的索引(从0开始), ' '中的分隔符可以自己定义。