find 메서드
str.find(a, b)
b 인덱스부터 a 문자열이 어디 인덱스에 있는지 리턴함. 만일 찾지 못한다면 -1 리턴
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a = "asdsdasdsadaskfc";
cout << a.find("kfc");
return 0;
}
+ 연산의 경우에도 그냥 뒤에 이어 붙는다.
하지만 스트링을 더해주는 것이 아니라 그냥 문자열을 두개 이상 더한다면 오류가 난다.
ex) string a = "abc" + "dfe";
따라서 따로 더해주거나 스트링을 하나 중간에 추가한다.
ex)
string a = "abc";
string b = a + "dfe";
// 즉, string 클래스 + 문자열 -> 가능
// 그러나 문자열 + 문자열은 불가능 하다.
왜냐하면 문자열을 char*로 인식하기 때문 따라서 형 변환을 통해 string으로 바꿔주면 가능하다.
파싱을 하는 이유: 로그 데이터에서 원하는 데이터만 뽑아 그래프를 그리고 싶음
사람들의 이력, 로그로 원하는 데이터 가져오기
ps보다는 현업에서 많이 사용됨.
find + substr로 파싱을 함.
substr(a, b)
a인덱스부터 b개를 뽑아내겠다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string words = "AB[1342]qt";
int a = words.find("[");
cout << words.substr(a + 1, 4);
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int main()
{
string words = "abcdefghijklmnop";
// a index ~ b index까지 출력
int a, b;
cin >> a >> b;
cout << words.substr(a, b - a + 1);
}
문자열과 스트링의 변환
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
// 문자열을 스트링 객체로
char buf[10] = "kfc";
string a;
a = buf;
// 스트링 객체를 문자열로
a = "sky";
strcpy(buf, a.c_str());
cout << buf;
return 0;
}
stoi ( 스트링을 숫자로)
to_string ( 숫자를 스트링으로)
팁: 파싱 문제는 웬만하면 하드 코딩한 후에 푸는 것이 좋다. 디버그가 다 끝나면 입력으로 바꿔주는 것이 좋음. 매우 까다롭기 때문
'C++ > 공부 정리' 카테고리의 다른 글
Vector로 그래프 관계 표현 (0) | 2022.04.27 |
---|---|
vector 이것 저것 사용, 그래프 (0) | 2022.04.26 |
재귀, 배열 원상복귀, (0) | 2022.04.22 |
순열, 조합 (0) | 2022.04.21 |
STL sort (0) | 2022.04.11 |