0

getline() 関数で抽出した文字列から int や double などの数値を抽出する方法を考えるのに苦労しています。

//例:

string data = "";
fstream inFile;

//ファイルの内容:

"Hello today is 83.3 degrees Fahrenheit."

// getline 関数を使用する

getline(inFile, data);

// 文字列データから数値を取り出す

ありがとうございました

4

2 に答える 2

0

cstdioを含める準備ができている場合は、sscanfを使用できます。

次のマニュアルページのリンクが役立ちます。-

http://linux.die.net/man/3/sscanf

char foo[] = "foo bar 12 baz";
int qux;
sscanf(foo, "foo bar %d baz", &qux); 
// qux will be assigned 12

また

char foo[] = "foo bar 12.5 baz";
double qux;
sscanf(foo, "foo bar %lf baz", &qux); 
// qux will be assigned 12.5 

明らかに、これをシナリオに合わせて調整し、さまざまな安全上の問題を考慮する必要があります。

于 2013-03-11T00:36:48.450 に答える
0

次のことを行うことができます

getline(inFile, data);

std::istringstream iss;
iss.exceptions(std::istream::failbit | std::istream::badbit );

iss.str(data);
double dTemp = 0;

while( iss.good() ){

  try{
   iss >> dTemp;
   }      
  catch(std::istream::failure &e ){
   /* Do your error check over here */
  }

}

また、C++ についてもっと読みたくなるでしょう。このリンクを確認してください

お役に立てれば。

于 2013-03-10T23:41:53.337 に答える