C++ CSV 文件中读取为浮动

C++ read in a CSV file as floats

本文关键字:读取 CSV 文件 C++      更新时间:2023-10-16

我正在尝试读取充满浮点数的.csv文件。我用它来构建我的代码。但是,数据正确读取,但作为字符串读入,但我想将数据用作浮点数。如果我尝试使用 stof(string),我会收到一个错误,它正在尝试将非数字转换为数字。所以我走了很长的路,把字符串转换成一个字符,然后转换成一个浮点数,它可以工作,但非常丑陋。但是,一旦所有数据都被读入并用cout打印出来,我的崩溃就会崩溃

trackBarFile.open("test2.csv");

std::string line, line2, line3;
int count;
std::string token;
float tokenNum,lineFloat,line2Float,line3Float;
char cstr[5],cstr2[5];
while (getline(trackBarFile, line,',')) 
{
    cstr[line.size()+1];
    strcpy(cstr, line.c_str());
    lineFloat = atof(cstr);
    getline(trackBarFile, line2,',');
    cstr[line2.size()+1];
    strcpy(cstr, line2.c_str());
    line2Float = atof(cstr);
    getline(trackBarFile, line3);       
    cstr2[line3.size()+1];
    strcpy(cstr2, line3.c_str());
    line3Float = atof(cstr2);

    std::cout<<line<<","<<lineFloat<<"   , "<<line2<<","<<line2Float<<"  ,  "<<line3<<","<<line3Float<<std::endl;

}
trackBarFile.close();

看来我偶然发现了我自己问题的答案。由于上述问题,我开始寻找将字符串转换为浮点数的不同方法。打印输出中的+2可以忽略,是我的"捏",以确保我不是在做梦

trackBarFile.open("TrackBarSignal.csv");
std::ofstream fout;
fout.open("Output_ReadInCSV.txt");
std::string line, line2, line3;
int count;
float tokenNum,lineFloat,line2Float,line3Float;
while (getline(trackBarFile, line,',')&&getline(trackBarFile, line2,',')&&getline(trackBarFile, line3)) 
{
    lineFloat = (float)atof(line.c_str());
    line2Float = (float)atof(line2.c_str());
    line3Float = (float)atof(line3.c_str());
    std::cout<<line<<","<<lineFloat+2<<"   ,   "<<line2<<","<<line2Float+2<<"  ,  "<<line3<<","<<line3Float+2<<std::endl;
}
trackBarFile.close();