개 등신같이 항상 문자열 다룰 때마다 까먹어서 하나씩 추가하면서 정리해야겠다


STRING

  • string to Int
int a = stoi(str);
int b = stoi("3");

 

  • 특정 문자 기준으로 자르기 (string tokenizer)
//////////////////////////////////////////////////////////////////////
//1. 이 방법은 구분기준이 문장이 될수 없고 문자만 가능!
#include <sstream>

string result = "";
stringstream ss("Hi Hello!! My Name");
string token = "";
const char delimiter = '!';

while (getline(ss, token, delimiter))
{
	cout << token << endl;
}

//////////////////////////////////////////////////////////////////////
//2.구분기준이 문장이 가능
string line = "Hi Hello ※※ My ※※ Name";
string delimiter = "※※";
int pos = 0;

//★ pos = line.find(delimiter)는 연산 순서 때문에 무조건 괄호로 감싸줘야한다! ★
while ( (pos = line.find(delimiter)) != string::npos)
{
	cout<<line.substr(0, pos)<<endl;
	line.erase(0, pos + delimiter.length());
}

//substr 처음 인덱스부터 끝 인덱스를 지정해주면 그만큼 문자열에서 가져온다.
//erase 지정 인덱스부터 지정 길이만큼 문자 삭제

 

  • 문자가 숫자인지 아닌지 판별
#include <cctype>

//isdigit(char)의 반환 값이 0이면 문자이고 아니면 숫자임
//문자 하나하나씩 판별해가는방식
string str = "1233BVBBA";

for (int i = 0; i < str.length(); ++i)
{
	if (isdigit(str[i]) == 0) cout << "문자임";
	else cout << "숫자임";
}

 

  • 문자열에서 문자열 검색하기 [ string::find( ) ]
더보기
int main() 
{
	string s, y;
	getline(cin, s); getline(cin, y); 
	
	while (pos != string::npos)
	{
		pos = s.find(y, pos + y.size());
	}
}

내가 가장 많이 쓰는 오버로딩 형식이다.

size_type find ( const string & str, size_type pos = 0 ) const;

 

호출된 문자열 객체의 pos번째 인덱스부터

str찾기 시작하며 찾은 첫 인덱스를 반환한다.

  • 문자열의 일부구간을 반환하기 [ string::substr( ) ]
더보기
#include <string>
using namespace std;

int main()
{
	string str = "ABCDEF";
    str.substr(3); 		//"DEF"
    str.substr(2, 2); 	//"CD"
    str.substr(2, 99); 	//"CDEF"
    str.substr(99, 2); 	// Error std::out_of_range
	return 0;
}

string substr (size_t pos = 0, size_t len = npos) const;

문자열의 pos번째 문자부터  len 길이 만큼의 문자열을 리턴한다.

len이 npos라면 알아서 문자열의 끝까지 적용시켜주고

반면에 pos는 유효한 인덱스가 아니면 에러를 일으키기에 주의할 것


https://plein-de-verite.tistory.com/339

 

[C++] 문자열 파싱하기 (토큰화하기)

Tokenizing a string in C++ string을 Tokenizing한다는 것은 delimiter를 기준으로 string을 split하는 것과 동일한 의미를 갖는다. string을 tokenize하는 여러 가지 방법을 알아보자! stringstream 클래스와 ge..

plein-de-verite.tistory.com

'C++ > 유용한 것들' 카테고리의 다른 글

숫자 구분자  (0) 2022.07.27
서식문자  (0) 2022.06.06
Cout에서 소수점 자리 고정하기  (0) 2022.06.04

+ Recent posts