-2

我正在尝试浏览格式如下的 CSV 文件:

4305,2.7,59338,"Autauga County, AL"
14064,2.7,57588,"Baldwin County, AL"

这是代码的改编版本:

using namespace std;
 int main(){
    string newl;
    //getline(cin, newl);

 while(getline(cin,newl,',')){

    double cases1 = stod(newl);
    //cin.ignore();
    cout << cases1 << ' ';
    cout << "numbaone" << endl;

    getline(cin,newl,',');
    //cin.ignore();
    double unemploymentrate1 = stod(newl);
    cout << unemploymentrate1 << ' ';
    cout << "numbatwo" << endl;


    getline(cin,newl,',');
    double income1 = stod(newl);
    cout << income1 << ' ';
    cout << "numbathree"  << endl;

    cin.ignore();
    getline(cin,newl);
    }
 }

当我只输入一行时,它给了我正确的输出,对于 1882,3.1,46064,"Bibb County, AL" 是

1882 numbaone   
3.1 numbatwo    
46064 numbathree

但是,当我复制并粘贴多行作为输入时,例如

1530,3.8,34382,"Barbour County, AL"
1882,3.1,46064,"Bibb County, AL"

输出变得非常混乱:

1530,3.8,34382,"Barbour County, AL"
1882,31530 numbaone
3.8 numbatwo
34382 numbathree
.1,46064,"Bibb County, AL"
1882 numbaone
3.1 numbatwo
46064 numbathree

任何帮助将不胜感激。

4

1 回答 1

0

您需要定义一个字符串流来解析每一行的数据。

#include <iostream>
#include <sstream>

using namespace std;

int main() {

    string newl;

    while (getline(cin, newl)) {

        stringstream stream(newl);

        getline(stream, newl, ',');
        double cases1 = stod(newl);
        cout << cases1 << ' ';
        cout << "numbaone" << endl;

        getline(stream, newl, ',');
        double unemploymentrate1 = stod(newl);
        cout << unemploymentrate1 << ' ';
        cout << "numbatwo" << endl;

        getline(stream, newl, ',');
        double income1 = stod(newl);
        cout << income1 << ' ';
        cout << "numbathree" << endl;
    }
    return 0;
}
于 2021-01-08T07:07:50.823 回答