- Column1의 이상한 소트와 더불어, 지금까지 본 내용중에서 꽤 신선한 내용이다. 왜 이렇게 하는지는 잘 모르겠지만... 역시 확장성을 위한 것 같다.
- 예제 : 어느 사이트에 로그인하면 DB에서 사용자 데이터를 긁어와서 보여준다. 이것은 책에 있는 예제고, 이것을 간단히 C++, 그리고 파일 입력으로 변형을 해보면,
- 출력 양식 : 변하는 것은 Kang-In-Su, Computer, Seoul, Su-saek이다.
~cpp
Hello, Kang-In-Su.
We'll send a Computer to you.
Address : Seoul, Su-saek
~cpp
// 일반적으로 대부분 이렇게 할 것이다.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string name, good, dong, city;
ifstream fin("data.dat");
getline(fin, name);
getline(fin, good);
getline(fin, city);
getline(fin, dong);
cout << "Hello, " << name << ".\nWe'll send a " << good << " to you. \nAddress : "
<< city << ", " << dong << endl;
return 0;
}
// Programming Pearls에서 제시하는 방법은
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
string data[4];
string scheme = "Hello, $0. \nWe'll send a $1 to you. \nAddress : $2, $3\n";
ifstream fin("data.dat");
for(int i = 0 ; i < 4 ; ++i)
getline(fin, data[i]);
int index = -1;
while(1) {
++index;
if(scheme[index] != '$')
cout << scheme[index];
else {
++index;
if(scheme[index] == '$')
cout << '$';
else if(scheme[index] >= '0' && scheme[index] <= '3')
cout << data[scheme[index] - 48];
else {
cout << "scheme error." << endl;
break;
}
}
if(scheme[index] == '\0')
break;
}
return 0;
}
이렇게 생겼다. 굉장히 해괴망측하다. 아직 이렇게 하는 것에 대한 장점은 잘 모르겠다.