STUDY/C++ & MFC

[MFC] Format()와 WriteString()

쑥말고인절미 2022. 4. 13. 17:55

성공소스

	if (nSelected == 1) {
		m_editResult.Format(_T("%f"), arithmetic.Add(m_editNum1, m_editNum2));
		CString str;
		str.Format(_T("%f+%f="),m_editNum1,m_editNum2);
		file.WriteString(str+m_editResult + L"\n");
	}

덧셈이 실행 됐을 때 CString의 결과값 이외에도 double값인 입력값 두개와 +, = 문자를 어떻게 텍스트 파일로 저장하는지가 문제였다.

한참 해매다가 책임님께서 해결해주셨는데 왜인지 나랑 동일하게(?) 소스를 작성하신거 같은데 돌아간다.

 

자 다음의 Format메소드를 보자

CString m_editResult;
double m_editNum1, m_editNum2;

m_editResult.Format(_T("%f"), arithmetic.Add(m_editNum1, m_editNum2));

Format메소드를 이용하여 add함수의 리턴값인 double형을 CString형으로 변환하여 m_editResult에 저장해주었다.

그니까 double을 CString형으로 형변환 해준거다. ( 왜 형변환 된거라고 생각을 못했을까...?)

 

Format메소드는 다음과 같이 수식(?)을 작성할 수 있는데

CString str;
str.Format(_T("%f+%f="),m_editNum1,m_editNum2);

형변환 하고자 하는 형태를 _T("")안에 작성해준다. 나는 'ㅇㅇ+ㅇㅇ=' 형태로 저장해주고 싶어서 _T("%f+%f=")로 작성해주었다. 그 다음 %f의 입력되어야할 순서에 맞게 변수를 작성해준다.

그러면 CString형 str변수에는 'm_editNum1+m_editNum2='이라고 저장될 것이다.

(물론 m_editNum1과 m_editNum2는 입력된 값으로 바뀌어 저장된다.)

 

그런 다음 아래와 같이 저장할 파일에 WriteString메소드를 이용하여 값을 저장해준다.

file.WriteString(str+m_editResult + L"\n");

위에서 저장한 str과 수식결과값 m_editResult와 줄바꿈문자가 함께 저장될 것이다.

(흠 근데 나도 WriteString에 +기호를 써보려고 했는데 내가 할 땐 안되고 책임님이 하시니 된다. 저 메소드...사람가리나...?)

 

성공적으로 저장된 텍스트 파일 내용이다. 총 두 번 덧셈을 실행해서 수식 두 개가 저장됐다.