1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <iostream> #include <string> #include <fstream> using namespace std; void main() { std::string macbuf[10]; ifstream fin{ "mac.txt" }; if (fin.fail()) { cout << "파일 오픈에 실패했습니다." << endl; } // 이 부분은 eof를 이용할 수도 있음 // 그런데 원본 코드에서 4개만 입력받고끝이라 이렇게함. for (int i = 0; i < 4; i++) getline(fin, macbuf[i]); fin.close(); cout << macbuf[0] << '
'; cout << macbuf[1] << '
'; cout << macbuf[2] << '
'; cout << macbuf[3] << '
'; return; } | cs |
cout << macbuf[0] << 다음엔 널문자를 넣은겁니당.
아무튼 원본에서 printf("%s",macbuf[0]);으로 되어있었는데, printf는 stirng을 이용한 문자열은 출력을 해주지 못합니당
c 스타일의 문자열은 통상 char* 로 되어있는 거구요
c++ 스타일의 문자열은 통상 string을 의미합니다.
두 차이라면 char*은 자료형을 그대로 가져다 쓰는 거구요 따라서 strlen이라든지 이러한 함수들이 외부에 있고 가져다 사용합니다.
string도 내부엔 char* 자료형이 있겠지만 string str; str.size(); 이런게 가능한 클래스구요 컨테이너라고 보통 말합니다.
mac.txt 내용이 라인단위로 구분된게 아니면 좀 바뀌어야 할 지도..
그롤듯