从csv文件中读取某些单元格

时间:2016-05-24 06:54:28

标签: c++ csv

我是c ++的新手。 我想从我的csv文件中读取某些单元格。 我找到了很多例子,但我仍然不知道......

#ifndef PIZZACRUST_H
#define PIZZACRUST_H
#include <fstream>

using namespace std;

class PizzaCrust{

    private:

        int crustOpt;
        ifstream crustInput;
        char crust[200];

    public:

        PizzaCrust();
        void setCrustOption(int crustOpt);

}
;

#endif

这是cpp

#include "pizzacrust.h"
#include <iostream>
#include <fstream>

using namespace std;

    PizzaCrust::PizzaCrust()
    {

        crustInput.open("pizzacrust.csv");

            while(crustInput)
            {
                crustInput.getline(crust, 200);
                cout << crust << endl;
            }

        crustInput.close();

    }

    void PizzaCrust::setCrustOption(int crustoption)
    {

        cout << "Please select the style of crust: ";
        cin >> crustoption;

            if ( crustoption > 0 && crustoption < 5 )
            {

                cout<<"You have selected " << crustoption << endl;

            }

            else
            {

                cout<<"Your selection is unavailable, please re-select from 1-4."<<endl;
                cin >> crustoption;

                cout<<"You have selected " << crustoption << endl;

            }

    }

这是csv文件

enter image description here

我怎么才能只阅读这个单元格,例如它是a1和a2 ??

“1。潘披萨

外面酥脆,里面蓬松。手工制作我们的招牌面团配方,烤至金黄色完美。“

1 个答案:

答案 0 :(得分:0)

那不是CSV file,它是Excel或类似程序的屏幕截图。从那个截图(为什么发布文本文件的屏幕截图?)看来,&#34;分隔符&#34;不是逗号或分号(这是常见的),而是换行符。

因此,要读取文件中的第一条记录,您需要阅读两行。要读取第四条记录,您需要读取(并可能丢弃)3 * 3行,然后才能读取两行(三条带有记录结束空行)的数据。

如果要读取所有记录,则需要在循环中读取三行,可能类似

std::string crust;
std::string description;
while (std::getline(crustInput, crust) &&
       std::getline(crustInput, description))
{
    // Use the data read from the file somehow

    std::string empty;   // The empty line between the records
    std::getline(crustInput, empty);  // Read and discard the empty line
}