csv 파일을 처리하는 데 약간의 문제가 있습니다. 저는 C++에 익숙하며 배우려고합니다. 그것은 아마도 내가 간과하고있는 작은 일이지만 온라인에서 답을 찾았고 내가 어디로 잘못 가고 있는지 알 수 없습니다. 여러 줄 및 쉼표로 구분 된 값을 가진 파일을 처리하려고합니다. 줄의 끝에 쉼표가 없어도 차이가 있습니다. - 참고로, 텍스트를 게시하려고했을 때, 문단 나누기, 그 차이를getline을 사용하여 csv 처리시 명확하지 않은 동작이 발생했습니다.
판매를 만드는 경우, manually-- 확실하지 않은 11/9/14,11/9/14 AMAZON MKTPLACE PMTS, -8.99
판매를 것을 추가했다 10/4/14,10/5/14 AMAZON MKTPLACE PMTS, -13.08
판매/3/14,10/14분의 5 10 아마존 MKTPLACE PMTS, -9.82
SALE/2/14,10/14분의 3 10 아마존 MKTPLACE PMTS, -45.48
판매 8/21/14,8/22/14 AMAZON MKTPLACE PMTS, -9.99
판매, 8분의 11/14,11/9/14 Amazon.com, -64.7
판매 10/1/14,10/20/14 * APL ITUNES.COM/BILL,-1.08
판매,/15/14,9/14분의 16 (9), APL * ITUNES.COM/BILL,-1.08
나는 다음 stringstream
으로 각 라인을 얻을 수 getline
를 사용하여 시도 아래의 코드를 사용하여 구분 기호 쉼표 (,)로 그 라인의 각을 구문 분석 :
ifstream file("test1.csv");
string value, line;
while (getline(file, line)) {
stringstream linestream(line);
while (getline(linestream, value, ',')) {
cout << "Value: " << value << endl;
} // while
cout << "Done Procesing" << endl;
} // while
을 내가 얻고 문제는 쉼표의 모든 5 토큰 후 어떤 이상한 이유로 단어 “Sale”
를 처리 구분 된 것은 말씀을 덮어이다 Value
및 이유를 이해할 수 없습니다. 약간의 지침을 정말로 바르게 평가할 것입니다.
사용, 아마 예를 들어,
linestream
작성하기 전에'\r'
문자를 제거, 다른 접근 방식을 필요, '))'구분 기호를 쉼표로 지정하십시오. 줄 끝에 쉼표가 없습니다. – druckermanly입력 파일에는'\ r \ n' 시퀀스로 구성된 DOS 스타일의 줄 끝이 포함되어있을 것입니다. 'getline()'은'\ r'을'line'으로 읽어들이므로 각 줄의 마지막 값은 캐리지 리턴을 포함합니다. –
@ user2899162이므로'linestream'에는 한 줄만 포함되어 있기 때문에이 경우에는 현재 줄의 끝 부분 인 EOF로 읽습니다. –