티스토리 뷰
Boost의 Regex를 쓰다가 헤멘 부분이 있다. 표준의 <regex>코드를 수정하지 않고도 네임스페이스만 지정하는 걸로도 완벽 호환이었다. 괜히 가져다 도입했다고 말한 것이 아니었군 ㄷㄷ
근데, 언어 표준이 있음에도 굳이 Boost를 쓴 이유는, 표준은 PCRE를 지원 안 하고, 그런 주제에 속도는 느리더라. MSVC2013기준이다.
느릴 이유가 있는지 의문이다. 혹시 누군가 이유를 알면 덧글로 알려주실 수 있으신지.
잡설은 이만 줄이고, 본론.
코드의 일부분을 발췌했을 뿐이므로, 컴파일러같이 text가 정의되지 않았고 name, cost가 사용되지 않았다는 문제점은 패스.
이 코드에서 문제점과 이유를 발견할 수 있다면, 아마 볼 필요가 없을 것이다. regex라이브러리에 익숙한 분이라고 생각한다. 하지만 나는 그렇지 않았지;;
문제점을 알려주자면, 저 id에 값이 제대로 할당되지 않는다.
이유인 즉슨, li->str()이 임시변수고, match는 그 임시변수의 반복자만 가지고있기 때문에 임시변수가 소멸하는 순간 같이 쓰레기가 되어버린다. 보통 match에다 값을 복사할 거라고 생각하지만, 아니었다. 이 편이 효율이 좋긴 하지만, 이렇다는 사실을 모르면 고통이 되어버린다.
당근 해결책은 string같은 변수에다 할당해주고 쓰면 된다.
그리고 Boost와 얼마나 차이점이 있는지 잘 모를 표준의 regex도 마찬가지다.
하.. 이거 하나 잡으려고 얼마나 허비한 건지. GC의 편리함을 다시 체감하게 된다.
비야네 할아버지도 '설마 C++을 가장 좋아하진 않겠죠?' 라고 말할 정도의 언어라... 근데 언매니지드 환경에선 딱히 이거 말고 쓸 게 없지 않나. 언어가 없단 건 아니지만.
regex 인코딩 깨짐같은 키워드로 구글링하다가 시간만 허비했다.
regex_search함수 내에선 값이 정상적인데, 함수가 끝나자마자 값이 이상해지니, 그제서야 의심할 수 있게 된 것이다.
'지식저장소 > 개발' 카테고리의 다른 글
하스켈 위키 타입 패밀리 번역 (0) | 2016.11.24 |
---|---|
안드로이드 완전정복 예제 실행하기 (0) | 2014.07.28 |
AStyle 비주얼 스튜디오 플러그인 (0) | 2013.09.04 |
Visual Studio Git Source Control Provider 활용하기 (0) | 2013.08.25 |
TortoiseGit 사용법 (2) - 파일상태 확인하고 커밋하는 법 (0) | 2013.08.25 |
- Total
- Today
- Yesterday
- MSVC2013
- gram
- Kotlin
- getch()
- coroutine
- JWT
- Code Snippet
- novel review
- V3 Lite
- Haskell
- intellisense
- Qt5
- React
- Windows Defender
- hooks
- CLion
- Notion
- error highlighting
- MSVC 2017 RC
- Rust
- Authentication
- game design
- IntelliJ
- SHAREX
- C/C++
- software compraison
- Deemo
- WSL
- C++11
- MSVC
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |