[완료] C++ 스트링 관련
글쓴이: bluesolip / 작성시간: 월, 2014/06/16 - 9:33오전
안녕하세요.
text 파일에서 문자열을 읽어와 특정 문자열을 찾으려고 합니다.
- test.txt 내용
aaaaa
bbbbb
ccccc
- 코드 일부
char buffer[128];
ifstream testtxt ("test.txt");
while (! testtxt.eof() )
{
testtxt.getline (buffer,128);
strcmp(buffer, "bbbbb")
{
printf("find");
}
}
파일에서 정상적으로 읽어오는데 "bbbbb" 문자열을 못찾습니다.
그래서 길이를 비교해보니 파일에서 읽은 값은 길이가 6이고 "bbbbb"는 5 라 다르다고 판단한 것이었습니다.
파일에서 한라인을 읽어들일때 NULL값이나 줄바꿈 없이 스트링 "bbbbb"만 읽어오려면 어떻게 해야 하나요?
도움 부탁드립니다.
Forums:
strstr or strncmp
strstr or strncmp
댓글 감사합니다. text에서 한라인을 읽어와서
댓글 감사합니다.
text에서 한라인을 읽어와서 카피하면 \n 이 붙잖아요?
이걸 없애고 복사하는 방법을 원해요. for loof로 끝에 있는 0x0d를 없애도 되겠지만 깔끔하게 코딩하는 방법이 있나 해서 여쭤봐요.
*strstr(s,"\n") = \0;
*strstr(s,"\n") = \0;
ㅎㅎ 간단한 방법이 있었네요. 감사합니다.
ㅎㅎ 간단한 방법이 있었네요.
감사합니다.
std::fstream::getline 함수는 별도로
std::fstream::getline 함수는 별도로 구분자가 주어지지 않은 경우
\n을 구분자로 간주해서 라인을 읽습니다.
즉 \n이 읽히지 않습니다.
두번째로 fgets 처럼 \n을 읽는다고 하더라도, 이 코드는
예를 들어 한 라인이 128 byte보다 긴 경우 등,
strstr이 NULL을 반환하는 경우 런타임 오류가 날 수도 있겠습니다..
좀 길어지더라도 안전하게 코딩하는게 좋아보이네요..
아래분 말씀처럼 std::string을 쓰는 것 추천.
참고로
이왕 C++ stream을 쓰실 거면 C의 문자열보다 C++에서 제공하는 std::string을 쓰는 게 훨씬 간편하고 메모리 관리도 쉽고 좋습니다.
댓글 달기