[C++] MFC CSV 파싱하기

BananaCube·2023년 2월 2일
0

C++ 독학 일기

목록 보기
7/7
  • MFC 프로젝트 생성

  • 애플리케이션 종류 : 대화 상자 기반

  • UI 생성

  • List Box 제어 변수 이름 추가

  • UI 창으로 다시 돌아가서 생성한 버튼 더블 클릭 시 온클릭 함수 자동 생성

void CdataParsingTestDlg::OnBnClickedButtonLoad()
{
	// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
}
  • ifstream을 사용하기 위해서 pch.h에 fstream을 추가한다.
// STL
// 표준 템플릿 라이브러리(STL: Standard Template Library)
#include <fstream>
  • 온클릭 함수에 파일 열기 추가
// 불러오기 버튼 온클릭 함수
void CdataParsingTestDlg::OnBnClickedButtonLoad()
{
	// 불러올 파일 경로 변수
	CString strResultFilePath = 0;
	strResultFilePath = "C:\\Users\\SH\\Desktop\\edu\\Result\\ttttt_03.csv";
	
	// 파일 열기
	ifstream inputData(strResultFilePath);

	// 파일이 없을 때 리턴
	if (inputData.is_open() == false) return;
}
  • vector에 데이터를 담기 위해서 pch.h에 vector를 추가한다.
#include <vector>
  • 데이터를 담을 vector 생성하고 담기
	// 데이터를 담을 vector 생성하고 담기
	vector<CString> vstrFileData;
	while (!inputData.eof())
	{
		// 데이터 사이즈
		const int iDataSize = 256;

		char arr[iDataSize];

		// 메모리를 초기화 해줄 수 있는 memset 함수
		memset(arr, 0, sizeof(char) * iDataSize);

		// 한 줄씩
		inputData.getline(arr, iDataSize);

		CString strData(arr);
		
		// vector 끝에 요소를 추가
		vstrFileData.push_back(strData);
	}
  • 벡터에 데이터를 다 담았으면 파일 닫기
	// 파일 닫기
	inputData.close();
  • 리스트 박스에 출력
	// 리스트 박스에 출력하기
	// 리스트 박스 리셋
	m_listBox.ResetContent();

	// 데이터 개수 변수
	int nSize = (int)vstrFileData.size();

	for (int i = 0; i < nSize; i++)
	{
		m_listBox.AddString(vstrFileData[i]);
	}
  • 여기까지만 작업하면 아직 뭔가 이상하다.

  • UI 리스트 박스 속성에서 Sort를 false로 변경하면 정상적으로 출력된다.

profile
C++ 독학한 내용을 정리하는 벨로그입니다.

0개의 댓글