从字符串中提取数字,例如整数或双精度

时间:2013-03-10 23:20:54

标签: c++ string getline file-read data-manipulation

我很难想到从getline()函数中提取的字符串中提取诸如int或double之类的数字的方法。

//例:

string data = "";
fstream inFile;

//文件包含:

"Hello today is 83.3 degrees Fahrenheit."

//使用getline函数

getline(inFile, data);

//从字符串数据中提取数字

谢谢

2 个答案:

答案 0 :(得分: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 ++的更多信息。请检查此link

希望这有帮助。

答案 1 :(得分: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 

您显然需要根据您的方案进行定制,并考虑各种安全问题。