2012-06-29 74 views
1

對不起,這樣一個模糊的標題。 基本上,我試圖破解一個函數來適應我的需求。但最近我一直在python上工作很多,而且我的C++有點生疏。下面兩行代碼的另一個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 

} 

感謝

+0

我認爲[這個問題](HTTP://計算器。 com/questions/5059049/read-an-string-line-by-line-using-c)是重複的。 – pb2q

回答

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(), //...)) { 
     //... 
    } 
} 
+0

真棒謝謝:) – Fraz