본문 바로가기

문자열38

stringstream 문자열 입력 버퍼, 자료형이 섞인 string 을 다룰때 사용 strigstream 은 여러 자료형이 섞여있는 string 을 입력 받을 때에 필요한 자료형에 맞는 데이터를 꺼낼때 유용하다 다음은 stringstream 을 사용해서 입력된 string 에서 공백 단위로 잘라 벡터에 푸쉬, 인덱스 추가 하는 문제이다 ' : ' 기호를 공백으로 바꾸어 stringstream 버퍼에 저장된 입력 데이터 가공하고 공백을 통해 분리해서 분리된 입력 요소를 num으로 받아 로 벡터에 push_back하여 저장하고, 인덱스로 꺼내 쓸 수 있다 #include using namespace std; int main(){ vector time; string clock="2022:06:22 15:15:30"; for(int i=0; i>num){ time.push_back(num); .. 2022. 6. 22.
cin 입력 후 다른 타입의 입력 시 꼭 cin.ignore를 해줘야 한다 정수형 cin을 입력 시, 숫자가 입력 버퍼에 저장되지 않고 바로 변수에 저장이 된다 하지만 문자열을 cin으로 입력 시, 입력 버퍼에 저장한 문자를 읽어서 변수로 저장한다 정수형 변수에 입력중에 문자열 변수가 입력이 되면 문자는 입력버퍼에 저장되고 cin은 이 버퍼의 문자를 정수형 변수에 저장하려고 하므로 정상 저장이 되지않고 에러가 나는 것이다 문자열 입력 시에도 \n 이 입력 버퍼에 남아서 문제가 되곤하니 이전 cin 사용 후 cin 이나 getline 등으로 새로운 자료형의 입력을 받을 때에는 항상 cin.ignore() 를 사용해서 입력버퍼를 비워주고 사용하자 2022. 6. 21.
문자열 내 맘대로 정렬하기 문제를 보자마자 sort 를 사용하여 정렬하면 되겠구나 했는데 벡터 안의 string 요소들이 담겨 있으니 아 2차원 배열로 풀면 되겠구나? 하고 생각했었고... cmp 함수를 제대로 못설계해서 시간을 날렸던 문제이다 커스텀 비교 함수의 사용법을 이해하게 된 문제이다 벡터 내 요소들인 string 들도 순서대로 비교가능하고, string내부의 인덱스 요소들도 순서를 비교가능하다 sort 의 비교함수는 인자를 2개를 가지고 비교하는데, 문제에서는 string 내 인덱스값이 같을때를 예외조건으로 달았으므로 두 string의 k번째 인덱스의 값이 같을 시 비교순서도 정해서 만들어주면 되는 문제였다 아래에 cmp함수의 a 2022. 6. 19.
[c++] 벡터, string, 배열 관련해서 주의할 점 1. 벡터는 한번에 cin 입력, cout 출력할 수 없다. 꼭 반복문을 통해서 요소별로 출력해주자 2. 벡터에 벡터는 할당이 불가하다. 벡터 a = 벡터 b; 에서 벡터 b를 벡터 a로 할당할 수 없다 3. 벡터끼리 = 으로 할당은 안되지만, string 끼리는 서로 할당이 가능하다 string a= string b; 가 가능하다. 심지어 string 서로 앞 뒤로 +"s"로 쉽게 붙일 수도 있다 4. 선언만 하고 요소를 추가 하지 않은 벡터도 벡터.size() 로 0의 크기를 얻을 수 있다. l 5. string 의 경우 선언 후 초기화 할당 안해도 문자열.length() , 문자열.size() 로 둘 다 0을 얻을 수 있다 6. push_back() 과 insert() 가 낮은 레벨의 코딩테스트에서.. 2022. 6. 18.