【发布时间】:2017-10-14 03:01:36
【问题描述】:
我是 C++ 和 ROOT (CERN) 编码的新手。我在下面有这些数据,即以回车为界。我只想获取 1001.612999 作为数字并将其分配给变量“z”。
# Space_ValveOpen_mca1.CNF [CR] #Real Live [CR] 1001.612999 999.999999[CR] 0 0 1 0
我使用了下面的代码,但一无所获。请问有人可以帮助我吗?
ifstream myfile;
myfile.open("Space_ValveClosed_mca1.dat");
int z;
myfile >> z;
cout << z << endl;
myfile.close();
【问题讨论】:
-
您应该使用 std::getline 阅读两行并将 std::regex "Real\sLive\s[CR]\s(\d+\.\d+)" 应用于第二行以提取目标细绳。之后您应该将字符串转换为双精度数字。
-
在使用正则表达式提取包含数字的子字符串后,只需添加您可以使用
std::stod将数字转换为双精度数。 -
@Minor Threat 感谢您的快速响应。我是 C++ 新手,我几乎无法理解如何将 std::regex "Real\sLive\s[CR]\s(\d+\.\d+)" 合并到我的代码中。此外,您能否告诉我如何在使用 std::regex 后将字符串转换为双精度数
标签: c++