# stringstream

7개의 포스트
post-thumbnail

[C++] 문자열 파싱

C++ 에서 문자열을 파싱하는 (자르는) (토큰화하는) 방법을 정리해보자. find 와 substr 이용 find() substr() 위의 2개의 함수 find, substr 를 이용해 문자열을 자르는 것이 가능하다. 문자열의 마지막의 공백 (구분자) 을 추가하지 않을 시 첫번째 공백을 만나고 Good 을 출력한

2023년 6월 23일
·
0개의 댓글
·
post-thumbnail

[C++] 문자열 클래스 비교(string vs char[](char*) vs stringstream)

chatGPT와의 채팅을 번역/편집해봤다. 1. std::string vschar[] vs std::stringstream char[]는 문자의 배열이며 C++에서 가장 기초적인 데이터 형태이다. 문자의 배열(문자열)을 저장하는데 사용하지만 몇 가지 제한 사항이 있다. 그 중 가장 주요한 제한 사항은 컴파일 타임에서 배열의 크기가 정해져야 한다. 만약 문자열 크기를 변경하고 싶으면 새로운 문자열을 만들고 이 문자열에 복사해야 한다. std::string은 문자열을 저장/수정하기 위한 동적 배열이다. `char

2023년 4월 12일
·
0개의 댓글
·

istringstream, ostringstream, stringstream

istringstream은 string을 입력받아 공백을 기준으로 변수 형식에 맞게 자르고 그 값들을 각각의 다른 변수들 선인 및 초기화시 사용할 수 있다. ostringstream은 str()을 이용하여 서로 다른 type들의 변수를 string type으로 변환 및 합칠 수 있다. stringstream은 문자열을 공백과 개행문자들을 기준으로 분리할 수 있다.

2023년 3월 14일
·
0개의 댓글
·
post-thumbnail

프로그래머스 모스부호 (1) [c++] stringstream 사용법

c++ stringstream의 기본적인 사용법은 아래와 같다. string 타입 변수 s가 ">" 연산자를 이용해 ' '(space, white space, 공백) 단위로 잘려서 나온다. 이제 기본적인 stringstream의 사용법을 알았으니 바로 문제를 풀어보자. 문자 ".-"는 morse의 첫 번째 index이고 문자로는 a이다. 우리는 아래와 같은 변환 과정을 통해 정답을 구해볼 것이다. 모스부호 ➜ index ➜ 문자

2023년 2월 1일
·
0개의 댓글
·

C++ stringstream overflow at 4GB (buffer)

전임자가 만든 c++ 스크립트에서 RAW 데이터를 파싱하여 buffer에 저장하다가 계속 메모리 주소가 튀는 현상이 발생했다. (bin을 파싱하여 buffer에 모두 저장 후, 마지막에 csv로 write) 디버깅하다가 원인을 못찾아 거의 반포기 상태였었는데.. 파싱 데이터의 크기를 보니 다른 날짜보다 유독 컸었다. 평균적인 크기는 2.1 GB ~ 3.4 GB 였었는데 공휴일 트래픽이 많아 4.1 GB 라는 크기의 데이터가 생성되어있었다. 데이터가 크다는걸 인지하고 파싱해보니 3.9 GB까지 버퍼에 저장할때는 괜찮았는데 4.0 GB가 되는 순간 메모리가 튀었었다. 머리가 띵하여 stringstream overflow 4GB를 검색해봤다 32bit(2^32)에서는 최대 4,294,967,296 (4GB)의 메모리만 쓸 수 있다고 바로 알려주셨다. stringstream 인스턴스 변수를 추가 생성 후 파싱 데이터를 나누어 할당하여 문제를 해결하였다. 근본적인 문제를 해결

2022년 6월 9일
·
0개의 댓글
·

C++로 문자열 split하기

서론 코딩테스트를 합격하기 위해 여러 방법으로 공부를 하고 있다. 가장 빠른 학습 방법은 잘하는 분들의 코드와 설명을 보는 것인데, 그 과정에서 알게된 팁 두 가지를 공유하고자 한다. bits/stdc++.h 헤더 gcc 계열의 컴파일러에는 미리 내장되어 있다. 우리가 ps를 하기 위해 사용할 법한 모든 헤더파일들을 include 해놓은 헤더파일이다. 실제로 필자는 S기업의 오프라인 코딩테스트 시험에서 memset 함수를 사용해야 했는데 헤더명이 기억나지 않았고, 이 헤더파일을 포함함으로써 위기(?)를 모면했던 경험이 있다. 내용은 아래와 같다. Windows에서 Visual Studio를 통해 사용하는 경우 이것이 없으므로, 사용하기 위해서는 따로 만들어 추가해주어야 한다. split 사용하기 글쓴이는 문자열을 다루는 경우, 특히 split 기능이 필요한 경우에 C++ 대신에 JS를 사용하곤 했다. 문자열을 다룰 때 편한 JS임에도 우선순위

2022년 5월 15일
·
0개의 댓글
·

[CPP-01] this 포인터와 문자열 스트림(stringstream)

**[CPP-Module / ex05: HI BRAIN THIS IS HUMAN 과제] ** Brain class를 만든다. 이 클래스는 identify()라는 멤버함수를 가져야 한다. 이 함수의 리턴값은 Brain클래스의 메모리 주소이다. (return value: brain’s address in memory, in hexadecimal format ex)"0x194F87EA") Human class를 만든다. 이 클래스는 Brain 클래스의 attribute를 const로 가지고 있어야 한다. Now, make it so this code compiles and displays two identical adresses: 둘 다 결국 같은 객체의 주소를 출력하게 만들어야 한다. 고민한 지점 const class를 사용해야하는 이유가 뭔지 attribute가 뭔지 > attribute란 클래스 내

2021년 4월 21일
·
0개의 댓글
·