[MFC] Format()와 WriteString()
성공소스
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에 +기호를 써보려고 했는데 내가 할 땐 안되고 책임님이 하시니 된다. 저 메소드...사람가리나...?)