'C++' string constructor

토스트·2025년 4월 25일

'C++' std::string

목록 보기
1/12

1. 기본 생성자

string();

: 길이가 0인 빈 문자열을 생성합니다.

<예시 코드>

#include <iostream>

using namespace std;

int main() {
	string str;

	cout << "str: " << str;

	return 0;
}

결과

2. 복사 생성자

string(const string& str);

: str의 복사본을 생성합니다.

<예시 코드>

#include <iostream>

using namespace std;

int main() {
	string original = "Hello";

	string str(original);

	cout << "original: " << original << endl;
	cout << "str: " << str;

	return 0;
}

결과

3. 부분 문자열 생성자

string(const string& str, size_t pos, size_t len = npos);

: str의 위치 pos에서 시작하여 len개의 문자까지 복사하여 생성합니다.

pos에서부터 len이 npos를 초과하더라도 npos까지만 복사합니다.
pos의 값이 str의 범위를 초과할 땐 오류가 발생합니다.

<예시 코드>

#include <iostream>

using namespace std;

int main() {
	string original = "Hello";

	string str(original, 1, 3);

	cout << "original: " << original << endl;
	cout << "str: " << str;

	return 0;
}

결과

4. C-style 문자열 변환 생성자

string(const char * s);

: C-style 문자열인 s를 복사하여 string 객체로 변환합니다.

<예시 코드>

#include <iostream>

using namespace std;

int main() {
	const char * original = "Hello";

	string str(original);

	cout << "original: " << original << endl;
	cout << "str: " << str;

	return 0;
}

결과

5. C-style 문자열 부분 변환 생성자

string(const char * s, size_t n);

: C-style 문자열인 s의 처음부터 n개의 문자까지 복사하여 string 객체로 변환하여 생성합니다.

<예시 코드>

#include <iostream>

using namespace std;

int main() {
	const char * original = "Hello";

	string str(original, 4);

	cout << "original: " << original << endl;
	cout << "str: " << str;

	return 0;
}

결과

6. 채우기 생성자

string(size_t n, char c);

: 문자열을 n개의 문자 c로 채웁니다.

<예시 코드>

#include <iostream>

using namespace std;

int main() {
	string str(5, 'k');
    
	cout << "str: " << str;

	return 0;
}

결과

7. 범위 생성자

template <class InputIterator>
string(InputIterator first, InputIterator last);

: [first, last) 범위 내의 문자를 동일한 순서로 복사합니다.

<예시 코드>

#include <iostream>
#include <vector>

using namespace std;

int main() {
	vector<char> original = { 'h', 'e', 'l', 'l', 'o' };

	string str(original.begin(), original.end());

	cout << "str: " << str;

	return 0;
}

결과

8. initializer_list(초기화 목록) 생성자

string(initializer_list<char> il);

: il의 각 문자를 동일한 순서로 복사합니다.

<예시 코드>

#include <iostream>

using namespace std;

int main() {
	string str({ 'H', 'e', 'l', 'l', 'o' });

	cout << "str: " << str;

	return 0;
}

결과

9. 이동 생성자

string(string&& str) noexcept;

: str의 문자열을 가져옵니다.

<예시 코드>

#include <iostream>

using namespace std;

int main() {
	string original = "Hello";

	string str(move(original));

	cout << "original: " << original << endl;
	cout << "str: " << str;

	return 0;
}

결과

0개의 댓글