如何从也包含C++字母的文本文件中提取某些数字?
How to extract certain numbers from a text file that also contains letters in C++?
我正在尝试弄清楚如何从文本文件中提取值作为双精度类型,以便它们可以用于计算。
我有一个格式如下的文本文件:
parameter1 parameter2 parameter3
50 0 0.1
我只想提取数字。 这是我的尝试之一(我已经工作了几个小时,试图弄清楚如何做到这一点(。
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
const int MAX = 80;
char buffer[MAX];
string input;
double j;
ifstream param0;
param0.open("param0.txt");
char ch;
while (param0)
{
param0.get(ch);
cout << ch;
}
getline(param0, input);
param0 >> j;
while (param0)
{
cout << j << endl;
getline(param0, input);
param0 >> j;
}
return 0;
}
此代码
char ch;
while (param0)
{
param0.get(ch);
cout << ch;
}
运行到文件末尾。之后的所有读取都不会返回任何内容。要么取消此循环,要么将文件倒带param0.rewind()
代码的基本思想应该是:
std::string line;
double p1, p2, p3;
std::string more;
while (std::getline(in, line)) {
std::istringstream iss{line};
if (iss >> p1 >> p2 >> p3 && !(iss >> more)) {
std::printf("p1=%f, p2=%f, p3=%fn", p1, p2, p3);
} else {
std::printf("invalid line: %sn", line.c_str());
}
}
简而言之,代码说:如果一行包含三个数字并且仅此而已,则该行是有效的。
C++纯粹主义者会说我不应该在C++中使用 printf,但我喜欢格式化和实际数据之间的分离。
建议:
- 最好检查是否正确打开文件。
- 完成后关闭文件。
如果您在一行中读取所有内容,则可以使用>> 运算符。只要传递正确的存储变量,它的字符串或双精度都无关紧要;
string param1;
string param2;
string param3;
double j,k,l;
ifstream file("test.txt",std::ios::in);
if (!file.is_open())
std::cout << "failed to open " << endl;
while (file)
{
file >> param1 >> param2 >>param3; // getting as strings
cout << param1 <<", "<< param2<<", "<< param3<<endl;
file >> j >> k >> l; //getting as doubles
cout << j <<", " << k <<", " << l<<endl;
}
file.close();
return 0;
输出
参数 1, 参数 2, 参数 3
50, 0, 0.1
相关文章:
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- C++(.cpp文件和.h文件)拆分代码并添加一个函数,提取 - 这很容易吗?
- 如何从也包含C++字母的文本文件中提取某些数字?
- 使用从文件(stod、strtod、atof)中提取的数据C++从字符串转换为双精度.csv
- JPG-如何从ICC配置文件部分APP2读取/提取数据
- 遍历对象向量,并找到与从文本文件中提取的对象匹配的变量
- 如何使用 WINAPI 和 C++ 提取可执行文件的文件描述?
- 查找并提取文件中的某个值
- 如何从txt文件c++中提取括号之间的数字
- 在Linux Mint 19下,从哪里提取wxWidgets的源代码(.cpp文件)用于步骤内部调试
- 如何将ASCII数字转换为从文件中提取的整数
- 从zip文件中提取文件夹
- 从Windows模块中的资源中提取文件
- 从zip中提取文件
- 使用LibTar提取文件
- 如何从文件中提取文件属性/元数据/注释?
- 在c++中使用COM从zip文件中提取文件
- 如何从虚拟磁盘中提取文件
- 如何从c++程序中提取文件,然后从其中运行一个
- 从资源中提取文件,文件大小错误