CSV文件读取 C++版本

代码

//创建结构体,把读取数据可以放入结构体成员中
struct WAYPOINT{
    double px;
    double py;
    double pz;
    double vx;
    double vy;
    double vz;
    double ax;
    double ay;
    double az;
};

//读取路径点csv函数
void read_waypoint_csv(std::string CSV_PATH)
{	
	std::ifstream _csvInput;
	_csvInput.open(CSV_PATH);
    if(!_csvInput){
        std::cout<<"open error!  Path = "<< CSV_PATH.c_str() <<std::endl;
        return;
    }
    
    //创建路径点容器
    std::vector<WAYPOINT> waypoint_vec;
    std::string str;
	//读取策略:读取一行数据, 跳过第一行
    size_t line_num = 1;
    //开始循环读取数据
    while(getline(_csvInput, str)){
        WAYPOINT waypt;
        std::istringstream iss(str);
        std::string token;

        if(line_num == 1){
            std::cout << iss.str() << std::endl;
        }else{
            getline(iss, token, ',');
            waypt.px = std::stod(token);
            getline(iss, token, ',');
            waypt.py = std::stod(token);
            getline(iss, token, ',');
            waypt.pz = std::stod(token);

            getline(iss, token, ',');
            waypt.vx = std::stod(token);
            getline(iss, token, ',');
            waypt.vy = std::stod(token);
            getline(iss, token, ',');
            waypt.vz = std::stod(token);

            getline(iss, token, ',');
            waypt.ax = std::stod(token);
            getline(iss, token, ',');
            waypt.ay = std::stod(token);
            getline(iss, token, ',');
            waypt.az = std::stod(token);

            waypoint_vec.emplace_back(waypt);
            printf("%5.3f, %5.3f, %5.3f | %5.3f, %5.3f, %5.3f, | %5.3f, %5.3f, %5.3f\n",
                   waypt.px, waypt.py, waypt.pz,
                   waypt.vx, waypt.vy, waypt.vz,
                   waypt.ax, waypt.ay, waypt.az);
        }
        line_num++;
    }
}
读取CSV文件C++代码可以使用ifstream和stringstream来实现。以下是一个读取CSV文件并将其存储为字符串数组的示例代码: ```cpp #include <iostream> #include <string> #include <vector> #include <fstream> #include <sstream> using namespace std; int main() { ifstream inFile("D:\\aa\\bb.csv"); string lineStr; vector<vector<string>> strArray; while (getline(inFile, lineStr)) { cout << lineStr << endl; stringstream ss(lineStr); string str; vector<string> lineArray; while (getline(ss, str, ',')){ lineArray.push_back(str); } strArray.push_back(lineArray); } } ``` 这段代码首先使用ifstream打开了一个名为"D:\\aa\\bb.csv"的CSV文件,并使用getline逐行读取文件内容。然后,使用stringstream将每行内容按逗号分割为多个字符串,并将这些字符串推入到vector中,最后将每一行的vector推入到一个二维vector中。 如果您需要将数据转换为其他类型,比如将字符串转换为浮点数,可以参考下面的示例代码: ```cpp #include <iostream> #include <string> #include <vector> #include <fstream> #include <sstream> using namespace std; int main() { ifstream inFile("D:\\LaneChangeDecision\\lc_data\\train_data_v0719.csv"); string lineStr; vector<vector<float>> strArray; while (getline(inFile, lineStr)) { stringstream ss(lineStr); string str; vector<float> lineArray; while (getline(ss, str, ',')){ float str_float; istringstream istr(str); istr >> str_float; lineArray.push_back(str_float); } strArray.push_back(lineArray); } } ``` 在这段代码中,我们首先定义了一个vector<vector<float>>来存储浮点数数据。然后,使用istringstream将每个字符串转换为浮点数,并将其推入到lineArray中,最后将每一行的lineArray推入到strArray中。 请注意,以上代码只是演示了如何读取和转换CSV文件中的数据,您需要根据自己的具体需求进行相应的修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C++ 读取csv文件(复制即可用)](https://blog.csdn.net/qq_39332551/article/details/125931529)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [C++读写CSV文件](https://blog.csdn.net/weixin_43531632/article/details/122281033)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值