2016. 11. 16. 17:43, Computer/Algorithm
C++ fread file buffer Strtok 예제
길이가 다른 Line 파일 읽기
예를 들어 다음과 같이 파일이 구성되어 있다고 해보자.
tst.txt
a<tab>bb<tab>ccc<tab>dddd bc bbb<tab>bdfbd<tab>d ... |
- 각 Line에는 길이가 다른 String이 <tab>('\t')로 구분되어 있다.
- 각 Line의 String의 개수가 다르다.(없을 수도 있다.)
라인마다 String의 갯수만 다르더라도 조금은 수월했을텐데 String 다루기에 미숙한 사람은 막막할 수 있다. Strtok을 쓸 때
buff2 = strtok(buff,"\n");
buff3 = strtok(buff2,'\t');
위와 같이 chain rule마냥 연결지어 설정해주지 않으면 프로그램이 제대로 동작되지 않는다. 아래와 같이 처리하면 된다.
buff : 전체 스트링
buff2 : string for line
buff3 : string for tab
buff2 = strtok(buff, "\n");
unsigned int cnt = 0;
int linenum = 0;
while (buff2) {
int i = 0;
int j = 0;
for (; buff2[i] != '\0'; i++) {
buff3[j] = buff2[i];
if (buff3[j] == '\t') {
buff3[j] = '\0';
//처리
j = 0;
}
else {
j++;
}
}
if (j != 0) {
buff3[j] = '\0';
}
buff2 = strtok(NULL, "\n");
linenum++;
}
'Computer > Algorithm' 카테고리의 다른 글
JSON 포맷 스트링 예쁘게 출력하는 코드(JsonPrettyPrint) (0) | 2017.08.07 |
---|---|
How to convert string buffer to int(float) fast in C++(고정된 길이 문자열을 숫자로 빠르게 변환) (0) | 2016.11.15 |
How to Read Big File in C++ (대용량 파일 읽기) (2) | 2016.11.15 |
c++ std 이용하여 string을 unsigned int로 변환하기 (0) | 2016.10.30 |
c++ std 이용하여 string 분할하기 (0) | 2016.10.03 |
Comments, Trackbacks