如何使用c ++将CSV文件的内容显示到数组中

时间:2015-11-14 18:48:57

标签: c++ csv

我想将csv数据显示为行和列形式,例如
命名uid类
  nnn 1 A
  bbb 2 B
  ccc 3 A

这是我到目前为止所尝试的:

#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<fstream.h>
#include<stdlib.h>
void main()
{
    clrscr();
    ifstream ifile;
    char s[100], fname[20];
    cout<<"Enter file name to read and display its content" ;
    cin>>fname;
    ifile.open(fname);
    if(!ifile)
    {
        cout<<"Error in opening file..!!";
        getch();
        exit(0);
    }
    while(ifile.eof()==0)
    {
        ifile>>s;
        cout<<s<<" ";
    }
    cout<<"\n";
    ifile.close();
    getch();
}

这是我显示csv数据的代码,但实际上它显示了一行上的所有数据。

3 个答案:

答案 0 :(得分:0)

您可以使用getline成员函数来获取完整的一行。然后改变这一行:

cout<<s<<" ";

cout<<s<<"\n";

另外,我认为你的while循环条件不正确。

答案 1 :(得分:0)

使用std::getline读取一行(包括逗号)。从此行创建std::stringstream

然后使用std::getline根据逗号分割行。您将不得不使用嵌套循环。

代码草图:

std::string line, word;

while (std::getline(ifile, line))
{
    std::stringstream stream(line);
    while (std::getline(stream, word, ','))
    {
        ... (whatever you want to do with each word)
    }
    std::cout << '\n'; // whatever you want to do at end of line
}

答案 2 :(得分:0)

.csv文件的行(行)中的单元格用';'检查登录。

例如当你从.csv文件中读取一行时,该行的每一行都用';'检查签名,您可以将其用于连续的单独列!