Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- TensorFlow Lite
- sort
- 다이나믹프로그래밍
- 삼성역테
- MCU 딥러닝
- tinyml
- 포스코 교육
- 딥러닝
- 영상처리
- DP문제
- tflite
- 코딩테스트
- 알고리즘
- BFS
- 임베디드 딥러닝
- DP
- 그리디
- 코테 문제
- 자료구조
- bfs문제
- 삼성코테
- dfs문제
- dfs
- 포스코 ai 교육
- 삼성역량테스트
- 삼성코딩테스트
- 초소형머신러닝
- 포스코 AI교육
- 코테
- 컴퓨팅사고
Archives
- Today
- Total
코딩뚠뚠
[개념정리] C++ string 정리 -2 본문
반응형
앞선 포스팅에서 string library 의 초기화 삽입 탐색 추가 등을 알아보았다.
이번 포스팅은 2편으로 string 의 반복자, 제거, c스타일로 변경 등을 알아보고자 한다.
어쩌면 코딩테스트에서 더 많이 쓰일 수 있는 개념들이다.
String 비우기
#include <iostream>
#include <string>
using namespace std;
int main(){
string str1 = "abc";
//str1이 비어있지 않다면
if(!str.empty()){
//str1을 비운다.
str1.clear();
}
return 0;
}
String 추출하기
#include <iostream>
#include <string>
using namespace std;
int main(){
string str1 = "nice to meet you";
string str2;
str2 = str1.substr(5,2); // 5번 인덱스부터 2글자만 읽는다. "to"
str2 = str1.substr(5); // 5번 인덱스부터 끝까지 읽는다. "to meet you"
str2 = str1.substr(str1.find("to")); //to가 있는 인덱스부터 끝까지 읽는다. "to meet you"
return 0;
}
String 반복자 이용
#include <iostream>
#include <string>
using namespace std;
string str = "nice to meet you";
int main(){
str.begin(); // 시작 인덱스 = 0
str.end(); //끝 인덱스+1 = 16 이는 즉 str.size() 와 같다고 볼수있다.
string::iterator it; //반복자 선언
for(it = str.begin(); it<str.end(); it++){
cout << *it;
}
cout << endl;
return 0;
}
특정 문자열 제거
#include <iostream>
#include <string>
using namespace std;
int main(){
string str1, str2, str3;
str1.assign("123456");
str1.erase(0,4); // 0~4까지 제거하니 "6" 만 남을것
str1.earse(); //전체제거
str2.assign("123456");
str2.erase(2); //인덱스 2 이후로 다 제거후 남은것은 "12"
return 0;
}
//인덱스를 받아 동작하는 것만 기억해두자.
특정 문자열 변경
#include <iostream>
#include <string>
using namespace std;
int main(){
string str1("nice to meet you");
string str2 = str1;
str1.replace(str1.find("nice"),4,"NICE"); //nice의 시작인덱스에서 4의 길이만큼, NICE로 변환된다.
//결과는 "NICE to meet you" 가 될것
str2.replace(str2.begin()+5, str2.begin()+7, "toto"); //시작점부터 끝나는지점까지가 toto로바뀐다.
//결과는 "nice toto meet you"
return 0;
}
C스타일의 문자열로 변환 : c_str
처음들으면 당황스러운 얘기지만 python이 아닌.. 문자열처리가 번거로운 C에선 거의 필수적인 문법이다 ㅠ
우선 C에서 string 과 std::string 은 다르다. 밑의 블로그에서 잘 정리해 두어 링크를 가져와 봤다.
jhnyang.tistory.com/99?category=818707
C에서 string 은 문자열 저장 방식이 char* 이고
C++에서는 문자열을 클래스형태로 저장한다.
두 스타일을 혼합해서 입출력을 받으며 자유롭게 사용하려면 필수적인 c_str..
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
int main(){
string str1 = "str";
char * array = new char[str1.length()+1]; //동적할당
strcpy ( array, str1.c_str()); //str1을 c스타일로 변경하여 array에 복사한다.
//strcpy(array,str1) 로 하면 안된다. array는 c스타일이고 str1은 string 방식이기 때문이다.
return 0;
}
이의 쓰임에 대한 예시는 아래의 문제풀이에서 확인할 수 있다.
반응형
'알고리즘 문제풀이 > 개념정리' 카테고리의 다른 글
[개념정리] getline의 사용 (0) | 2021.03.04 |
---|---|
[개념정리] strtok (0) | 2021.03.04 |
[개념정리] C++ string 정리 -1 (0) | 2021.03.04 |
[개념정리] Two pointer algorithm (0) | 2020.12.27 |
[개념정리] set container (0) | 2020.12.27 |