1

抱歉这么模糊的标题。基本上,我正在尝试破解一个功能以满足我的需求。但最近我在 python 上做了很多工作,我的 c++ 有点生疏了。

所以早些时候我的功能采取了

 int func(FILE *f)  
 { .....
   if (fgets(line, MM_MAX_LINE_LENGTH, f) == NULL) 
    return MM_PREMATURE_EOF;

if (sscanf(line, "%s %s %s %s %s", banner, mtx, crd, data_type, 
    storage_scheme) != 5)
    return MM_PREMATURE_EOF;

 }

现在我直接输入字符串数据而不是这个

 int func(std::string *data)  
   { .....
   // how should I modify this if statment..I want to parse the same file
   // but instead it is in form of one giant string

 }

谢谢

4

1 回答 1

2

您可以使用相同的代码,只需将其中的数据转换std::string为 C 字符串即可。

sscanf(data->c_str(), "%s %s %s %s %s", //...);

但是,您应该考虑传入 const 引用,因为您可能不打算修改输入数据:

int func(const std::string &data) {
    //...
    if (sscanf(data.c_str(), //...)) {
        //...
    }
}
于 2012-06-29T22:10:33.227 回答