簡體   English   中英

C ++以浮點數的形式讀取CSV文件

[英]C++ read in a CSV file as floats

我正在嘗試讀取一個充滿浮點數的.csv文件。 我用來構建我的代碼。 但是,數據可以正確讀取,但可以作為字符串讀取,但是我想將數據用作浮點數。 如果我嘗試使用stof(string),則會收到錯誤消息,它試圖將非數字轉換為數字。 因此,我走了很長一段路,將字符串轉換為char,然后將其轉換為float,這很有效但是很丑陋。 但是,一旦所有數據都被讀取並打印出來,程序就會崩潰

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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM