gpt4 book ai didi

c++如何从具有反斜杠的字符串中提取数字?

转载 作者:搜寻专家 更新时间:2023-10-31 02:18:13 24 4
gpt4 key购买 nike

我正在尝试从字符串中提取数字。我想将每个数字保存到一个单独的双变量中。我目前尝试使用像这样的简单字符串流。

std::string line = "100.2456426246\200.2624362436\300.136213477347";
std::stringstream stream(line);
stream.precision(20);
double a,b,c;
stream >> a >> b >> c;

不仅精度不对(只打印出6位),而且只提取了第一个数a(100.245),b和c为null。我怀疑这是由于反斜杠引起的,但我不确定。

读取每个数字之间包含反斜杠的字符串并以正确的精度存储整个数字的最佳方法是什么?

最佳答案

您可以使用带有定界符的 getline 将字符串拆分为元素 vector ,并使用 atof 沿着这些行提取 float

vector<string> elems;
stringstream stream(line);
string item;
while (getline(stream, item, "\\")) {
elems.push_back(item);
}
vector<float> val(elems.size());
...
val[i]=atof(elems[i].c_str())

这里的精度更多的是表现形式,您可以在 setprecision 的帮助下自定义。例如,

#include <iomanip>
...
cerr << setprecision(6) << val[i] << endl;

将截断输出为六位有效数字。

另一件事是确保存储直到最后一位的所有数字。为了确保存储所有数字,您定义的 float 的大小必须足够大以包含您的数据,并且 atof 可能需要被适当的解析器替换,如果 float 应该被替换为 double 或其他东西。

关于c++如何从具有反斜杠的字符串中提取数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34755648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com