Tiny Bunny
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป/C++

[c++] replace() ํ•จ์ˆ˜, find() ํ•จ์ˆ˜ / ๋ฌธ์ž์—ด ์ฐพ๊ธฐ

by soonybutter 2024. 11. 27.
728x90

 

 


1. size_t

int ํ˜•

: -21e8 ~ 21e8 ์ •์ˆ˜

 

 

size_t ํ˜•

: unsigned int  ๋Š” '0์„ ํฌํ•จํ•œ ์–‘์˜ ์ •์ˆ˜'๋‹ค.

: ์ปดํ“จํ„ฐ ์‚ฌ์–‘์— ๋”ฐ๋ผ uint32_t๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ๊ณ , uint64_t๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ๋‹ค.

 

ex)

uint32_t u32t;  ๋Š” 32๋น„ํŠธ์˜ 0์„ ํฌํ•จํ•œ ์–‘์˜ ์ •์ˆ˜

unit64_t u64t; ๋Š” 64๋น„ํŠธ์˜ 0์„ ํฌํ•จํ•œ ์–‘์˜ ์ •์ˆ˜

 

 

string::npos

: size_t์˜ underflow ๊ฐ’ -> ์“ฐ๋ ˆ๊ธฐ๊ฐ’

 

 

 


2. find() ํ•จ์ˆ˜

C++ string ๋ณ€์ˆ˜์—์„œ ํŠน์ • ๋ฌธ์ž์—ด์„ ์ฐพ์„ ๋•Œ, std::string์˜ find() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

 

#include <string>
#include <stdio.h>

using namespace std;

int main()
{
    string s = "Enter ui1234 Muzi";
    size_t index = s.find("ui1234");//size_t๋Š” unsigned long type
    
    printf("%zu\n", index); // zu๋Š” unsigned long์— ๋Œ€ํ•œ type specifier
    //์ถœ๋ ฅ : 6
    
}

์œ„ ์ฝ”๋“œ์—์„œ index์˜ ๊ฐ’์€ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘ ์œ„์น˜๊ฐ€ ๋œ๋‹ค.

๋‹ค์‹œ ๋งํ•ด, text.find("ui1234")๋Š” 6์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

 

 

์˜ˆ์‹œ (index ๋ฒˆ์งธ ๋ถ€ํ„ฐ find)

#include <string>
#include <stdio.h>

using namespace std;

int main()
{
    string s = "Enter ui1234 Muzi";
    size_t index = s.find("ui1234",7);//size_t๋Š” unsigned long type
    
    printf("%zu\n", index); // zu๋Š” unsigned long์— ๋Œ€ํ•œ type specifier
    //์ถœ๋ ฅ : ์“ฐ๋ ˆ๊ธฐ๊ฐ’ ์ถœ๋ ฅ.
}

์œ„ ์ฝ”๋“œ์—์„œ index์˜ ๊ฐ’์€ 7๋ฒˆ์งธ ๋ถ€ํ„ฐ ui1234๋ฅผ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์— ์“ฐ๋ ˆ๊ธฐ ๊ฐ’์ด ๋‚˜์˜จ๋‹ค. 

์ฆ‰, string ์•ˆ์— ํŠน์ • string์ด ์—†๋Š” ๊ฒฝ์šฐ, string::npos๋ฅผ ๋ฐ˜ํ™˜!

 

 

 

3. replace() ํ•จ์ˆ˜

: ๋ฌธ์ž์—ด ๋‚ด์˜ ํŠน์ • ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๋กœ ๊ต์ฒดํ•˜๋Š” ํ•จ์ˆ˜

 

 

1. replace(iterator_๋ฐ”๊ฟ€๋ฌธ์ž์˜ ์‹œ์ž‘ , iterator_๋ฐ”๊ฟ€๋ฌธ์ž์˜ ๋ , ๋ฐ”๊ฟ€๋ฌธ์ž์—ด)

 

ex.
str.replace(str.begin() + pos, str.begin() + pos + origin.size(), "#BBQ#");

 

 


2. replace(์œ„์น˜, ๋ฌธ์ž์ˆ˜, ๋ฌธ์ž์—ด)

 

ex.
//str.replace(pos, 3, "#BBQ#");

 



 

string str = "ABCDEF";
string find_str = "CDE";
string replace_str = "XXXX";

str.replace(str.find(find_str), find_str.length(), replace_str);

์‹คํ–‰ ๊ฒฐ๊ณผ : ABXXXXF

 

 

 

 

 

 

 

+

์˜ˆ์ œ ํ’€์ด ์ฝ”๋“œ

#include <iostream>
#include <string>

using namespace std;

string str;

void changeStr(string origin, string dest) {

	size_t pos = 0;
	while (1) {

		pos = str.find(origin, pos);

		if (pos != string::npos) {

			//replace(iterator_๋ฐ”๊ฟ€๋ฌธ์ž์˜ ์‹œ์ž‘,iterator_๋ฐ”๊ฟ€๋ฌธ์ž์˜ ๋, ๋ฐ”๊ฟ€๋ฌธ์ž์—ด)
			str.replace(str.begin() + pos, str.begin() + pos + origin.size(), dest);
			//replace(์œ„์น˜,๋ฌธ์ž์ˆ˜,๋ฌธ์ž์—ด)
			//str.replace(pos, 3, "#BBQ#");
			pos += dest.size();

		}
		else break;

	}

}


int main() {

	cin >> str;

	changeStr("KFC", "#BBQ#");
	changeStr("MC", "#BBQ#");
	changeStr("BICMAC", "#MACBOOK#");
	changeStr("SHACK", "#SHOCK#");
	changeStr("SONY", "#NONY#");


	cout << str;
	


	return 0;
}
728x90

TOP

Designed by ํ‹ฐ์Šคํ† ๋ฆฌ