C++ 如何跳过在c+中读取csv文件的第一列+;

C++ 如何跳过在c+中读取csv文件的第一列+;,c++,csv,C++,Csv,下面的代码是从csv文件中获取一些数据。但结果如下: 琼斯,123-123-1234,波士顿商学院,GP1234,39,莎拉,手臂骨折,3 史密斯,123-231-1234,UHC,G1234,47,弗朗辛,理疗,2015年3月25日 亚当斯,123-123-4321,信诺,U1234,28,鲍勃,断臂,2 5,梵高,123-321-1234,波士顿商学院,GP1235,37,安德烈,肚子痛,3 10,白葡萄酒,123-312-1234,UHC,G1112,42,彼得,监督正常第一次怀孕,201

下面的代码是从csv文件中获取一些数据。但结果如下:

琼斯,123-123-1234,波士顿商学院,GP1234,39,莎拉,手臂骨折,3

史密斯,123-231-1234,UHC,G1234,47,弗朗辛,理疗,2015年3月25日

亚当斯,123-123-4321,信诺,U1234,28,鲍勃,断臂,2

5,梵高,123-321-1234,波士顿商学院,GP1235,37,安德烈,肚子痛,3

10,白葡萄酒,123-312-1234,UHC,G1112,42,彼得,监督正常第一次怀孕,2015年3月26日

但是我想得到除第一列之外的数据(例如5,6,9,5,10) 我该怎么做?你能给我一个主意吗?谢谢

void Hospital::readRecordsFile()
{
    fileName = "Waterbury Hospital patients records.csv";
    ifstream file(fileName);
    string value;
    vector <string> getInform;
    while(file.good())
    {
        getline(file, value);
        getInform.push_back(value);
        //getInform.erase(getInform.begin()+1);
    }

    for(int i=0;i<getInform.size();i++)
    {
        cout << getInform[i] << endl;
    }

}
void Hospital::readRecordsFile()
{
fileName=“Waterbury医院患者记录.csv”;
ifstream文件(文件名);
字符串值;
矢量信息;
while(file.good())
{
getline(文件、值);
GetInfo.push_back(值);
//getInform.erase(getInform.begin()+1);
}

对于(int i=0;i您可以在每行中找到第一个分隔符(,),然后删除它前面的所有字符:

getline(file, value);
const auto pos = value.find(',');
if(pos != string::npos)
    value.erase(0, pos + 1);
如果您不确定CSV文件中使用的分隔符(,),可能会忽略每行开头的所有数字:

getline(file, value);
const auto pos = value.find_first_not_of("0123456789");
if(pos != string::npos)
    value.erase(0, pos + 1);

您可以在每行中找到第一个分隔符(,),然后删除它前面的所有字符:

getline(file, value);
const auto pos = value.find(',');
if(pos != string::npos)
    value.erase(0, pos + 1);
如果您不确定CSV文件中使用的分隔符(,),可能会忽略每行开头的所有数字:

getline(file, value);
const auto pos = value.find_first_not_of("0123456789");
if(pos != string::npos)
    value.erase(0, pos + 1);

你应该用“,”分开每一行,然后忽略第一部分


只需解析字符串以充实第一个“,”字符,然后使用从该索引到结尾的子字符串。

您应该将每行按“,”分隔,然后忽略第一部分

只需解析字符串以充实第一个“,”字符,然后使用从该索引到结尾的子字符串。

可用于忽略输入流中的一些文本

从输入流中提取和丢弃字符,直到并包括
delim

可用于忽略输入流中的某些文本

从输入流中提取和丢弃字符,直到并包括
delim


检查这个问题,它甚至解决了为什么
while(file.good())
是错误的:检查这个问题,它甚至解决了为什么
while(file.good())
是错误的:如果我把getline(file,value)改成getline(file,value,,)?谢谢你,先生!@GideokSeong你可以写:getline(file,value,,,);getline(file,value);但我认为上面的代码更可靠,尤其是逗号(,)在CSV文件中不用作分隔符。在CSV文件中,每行中的每一项都用逗号分隔,因此我需要使用逗号,第一个逗号不一定是CSV中的第一个分隔符。如果第一个值被引用并包含逗号,此代码将失败。如果我将getline(文件,值)更改为getline(文件,值,,'),该怎么办?谢谢你,先生!@GideokSeong你可以写:getline(file,value,,);getline(file,value);但是我认为上面的代码更可靠,特别是如果逗号(,)在CSV文件中不用作分隔符。在CSV文件中,每行中的每个项目都用逗号分隔,因此我需要使用逗号,第一个逗号不一定是CSV中的第一个分隔符。如果第一个值被引用并包含逗号,则此代码将失败。