私の入力ファイルには、次のような多くの行があります。
ATOM 339 OP1 DG D 218 72.270 54.958 23.040 1.00 27.52 O
72.270 54.958 23.040
すべての行から3つの座標を抽出したいと思い ます。すべての行を文字列として保存し、以下を使用して座標を抽出しました。
sscanf(protein[j].c_str(),"%s %s %s %s %s %s %f %f %f",useless1,useless2,useless3,useless4,useless5,useless6,&xCord,&yCord,&zCord);
ここでは、文字列の名前はすべて役に立たない。これにより、多くの警告とプログラムのクラッシュが発生します。
warning: format '%s' expects type 'char*', but argument 6 has type 'int'.
warning: cannot pass objects of non-POD type 'struct std::string' through '...'; call will abort at runtime.
何が問題ですか?
また、入力char配列に1つではなく複数のスペースがある場合、sscanf()はクラッシュしますか?(このエラーの可能性を排除するために、入力ファイルの複数のスペースを削除しました。)
編集:私はそれらが最初にintであるというこの可能性をチェックしました。(私はそれほど大きな初心者ではありません。)これは最初のコードです:
string str,useless1,useless2,useless3,useless4,useless5,useless6,useless7,useless8,useless9;