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 に答える