c++如何从带有反斜杠的字符串中提取数字
c++ How to extract numbers from a string that has backslash?
我正在尝试从字符串中提取数字。我想把每个数字保存到一个单独的双变量中。我目前尝试使用这样一个简单的字符串流。
std::string line = "100.2456426246200.2624362436300.136213477347";
std::stringstream stream(line);
stream.precision(20);
double a,b,c;
stream >> a >> b >> c;
不仅精度错误(只打印出6位数字),它只提取第一个数字a(100.245),b和c为空。我怀疑这是由于反斜杠,但我不完全确定。
读取每个数字之间包含反斜杠的字符串并以正确的精度存储整个数字的最佳方法是什么?
您可以使用带分隔符的getline
将字符串拆分为元素向量,并使用atof
提取沿以下行的浮动
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的大小必须足够大以包含数据,如果float应该被double
或其他东西替换,则atof
可能需要被适当的解析器替换。
相关文章:
- 如何检查一个c++字符串中有多少相同的字符/数字
- 在 c++ 中查找字符串中没有循环的数字总和
- 将数字转换为填充字符串
- 递归形成字符串中所有数字字符的中间和?
- std::regex:匹配由数字和空格组成的字符串,并提取数字.如何?
- C++ python 中的函数返回数字而不是字符串
- C++:从文件中读取字符串和整数,并获得最大数字
- 以C++格式将字符串转换为数字
- C++关于数字的字符串数组
- 使用非托管导出将字符串从 C# 返回到C++将返回数字
- 我想使用 std::stoi 函数在 cpp 中将字符串转换为整数,因为我想在字符串中找到不同数字的总和(在下级酶中)
- 将大数字(10-12 位数字)存储在无序映射中<字符串,整数>
- 用C++将浮点数字转换为本地化字符串
- 如何在c++中将字符串中的所有数字保存到多维数组中
- 列出所有 N 位数字,并带有 [字符串] 数字
- 如何将字符串数字转换为各个数字的整数数组
- 如何将字符串/数字排序添加到 QSortFilterProxyModel 派生类
- 将std::字符串数字转换为十六进制数字
- 在c++ /Qt中拆分Lua函数调用的混合字符串/数字参数列表
- 获取字符串数字的精度