这可能是一个新手问题,但我在搜索中找不到答案。 我有一个变量: char buffer [128]; 现在我已经通过搜索脚本实现了它的价值,从一个大文件到:
“密度@ 15°C kg / m3 990.1(991.0 Max).BR.Viscocity @ 50°C cSt 355。”
这是我特别感兴趣的128个字符的特定行,更具体地说是浮点数“990.1”。我需要从我的所有文件中得到这一点,所以让程序搜索特定文本是不行的(我需要循环遍历很多文件),它必须搜索第一个浮点数。我一直在尝试sscanf,但现在已经坚持了一段时间,所以我想我会问。
非常感谢任何帮助!
答案 0 :(得分:0)
如果您要查找的浮动值在kg/m3
和(空格)之间始终,您可以使用
strstr
来提取字符串然后转换为float。
http://www.cplusplus.com/reference/cstring/strstr/
char *start;
char *end;
double val;
start = strstr( buffer, "kg/m3 " );
start += 6;
end = strstr( start, " " );
*end = 0;
val = atof( start );
*end = ' ';
请注意,我查找终止空间并转换为空终止字符。
所以atof
从start
开始解析缓冲区,并在最后一位数后停止。
稍后我恢复空间以保持原始字符串不变。
答案 1 :(得分:0)
感谢所有人的投入。所以我通过使用解析来回答πάνταῥεῖ的评论答案,主要是因为在Paolo的建议中给出了 me 问题的空白。这对我有用:
float num;
string dummy;
istringstream iss( buffer );
while( !iss.eof() && dummy != "(")
{
iss >> num;
if(iss.fail()) {
iss.clear();
iss >> dummy;
continue;
}
}