옵션 |
|
아래 코드는 파일에 쓰여있는 Customer라는 글자를 Admin이라는 글자로 바꾸는 코드입니다.
끝이 NULL로 잘 처리가 안 된것인지 Admin이 아니라 기존의 텍스트(Customer)와 겹쳐서 Adminmer가 되어버립니다.
Customer의 글자수가 더 많기 때문에 Admin에서 Customer로 바뀌는데는 지장이 없습니다.
바꾸기 전의 글자수가 바꾸고 싶은 글자수보다 이처럼 적은 경우는 문자의 뒷 부분이 기존 글씨와 글씨가 겹치는데 어떻게 해야할까요?
NULL을 제대로 삽입을 해야할 거 같긴한데.. 어찌해야할지 모르겠네요.
(Admin + 띄어쓰기가 아니라 딱 Admin까지만 나오게 하고 싶습니다.)
fstream fs;
fs.open(getLoginedID() + ".dat", /*fstream::binary |*/ fstream::in | fstream::out);
string str((istreambuf_iterator<char>(fs)), istreambuf_iterator<char>());
size_t pos = str.find("Customer");
if (pos != string::npos) {
cout << "string found at position: " << int(pos) << endl;
fs.seekp(pos);
fs << "\nAdmin";
fs.put('\0');
//fs.write("\nAdmin\0", 7); 이 방법으로도 되지 않음
}
fs.close();
}