문제

이 질문은 이미 여기에 답이 있습니다.

C ++의 탭 구분 파일에서 읽고 각 줄을 레코드로 저장하는 가장 좋은 방법은 무엇입니까? 나는 이것을 돕기 위해 오픈 소스 라이브러리를 찾고 있었지만, 실패하여 내 자신의 글을 써야 할 것 같습니다.

도움이 되었습니까?

해결책

typedef vector<vector<string> > Rows;
Rows rows;
ifstream input("filename.csv");
char const row_delim = '\n';
char const field_delim = '\t';
for (string row; getline(input, row, row_delim); ) {
  rows.push_back(Rows::value_type());
  istringstream ss(row);
  for (string field; getline(ss, field, field_delim); ) {
    rows.back().push_back(field);
  }
}

이것은 당신을 시작할 것입니다. 각 행이 같은 수의 필드를 가지고 있는지 확인하는 것은 없습니다. field_delim, 등.

다른 팁

ioStreams를 사용하는 데 아무런 문제가 없습니다. GetLine과 함께 각 줄을 문자열로 읽은 다음 해당 문자열의 StringStream을 사용하여 필드를 반복 할 수 있습니다.

Wikipedia의 기사에 나열된 도서관이 몇 개 있습니다. csv_application_support.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top