C ++의 문자열에 대해 알아야 할 모든 것



이 기사는 C ++의 문자열에 대한 상세하고 포괄적 인 지식을 제공하고 다양한 작업의 예를 제공합니다.

용어 순서가 지정된 문자 시퀀스를 의미합니다. C ++에서 클래스의 객체를 사용하여 문자 시퀀스를 나타낼 수 있습니다. 이를위한 정의를 제공하는 클래스를 String 클래스라고합니다. String 클래스는 문자를 단일 바이트 문자에 대한 액세스를 허용하는 기능과 함께 바이트 시퀀스로 저장합니다. C ++에서 바깥 쪽 구분 기호는 큰 따옴표입니다. 이 'C ++의 문자열'기사에서는 다음 주제에 대해 설명합니다.

문자열 클래스와 문자 배열 차이

String 클래스 문자 배열
문자열 클래스는 문자 스트림으로 표현할 수있는 객체를 정의하는 클래스입니다.문자 배열은 단순히 문자 배열입니다.
문자열의 경우 메모리가 동적으로 할당되므로 필요에 따라 런타임에 더 많은 메모리를 할당 할 수 있습니다.문자 배열의 크기는 정적으로 할당되어야하므로 필요한 경우 런타임에 더 많은 메모리를 할당 할 수 없습니다.
String 클래스는 문자열에 대한 다양한 작업을 허용하는 여러 기능을 정의합니다.문자 배열은 문자열을 조작하는 많은 내장 함수를 제공하지 않습니다.
구현과 비교할 때 문자열은 문자 배열보다 느립니다.문자 배열의 구현은 더 빨리.

C ++에서 문자열 선언 및 초기화

strings-in-c++C ++에서 문자열 초기화는 매우 간단합니다!. 다음 방법 중 하나를 사용할 수 있습니다.





네임 스페이스 std 문자열 std_string 사용

또는

std :: string std_string
#include using namespace std int main () {char ch [12] = { 'H', 'e', ​​'l', 'l', 'o', '', 'b', 'y', '' , 'c', 'h', ''} string st = 'Hello by st'std :: string std_st = 'Hello by std_st'cout<< ch << endl cout << st << endl cout << std_st << endl return 0 }

산출:



안녕하세요 채널 안녕하세요 안녕하세요 std_st 안녕하세요

이 예에서는 문자 배열 (ch)과 문자열 cl을 모두 표시했습니다.ass (st 및 std_st) 초기화 메서드. 먼저, 12 개의 요소를 포함하고 널 문자로 끝나는 문자 배열 ch [12]를 정의하여 문자 배열 방법을 사용했습니다. 두 번째 부분에서는 문자열 클래스 메서드를 사용했습니다.

C ++의 문자열 작업

문자열 클래스를 사용할 때의 장점은 C ++에 여러 내장 함수를 조작 할 수 있다는 것입니다. 이것은 프로그래밍을 쉽고 효과적으로 만듭니다. 중요한 문자열 조작 함수를 몇 가지 예를 통해 이해해 보겠습니다.

자바에서 프로그램 종료

문자열 크기 : size () 및 length () 메서드는 모두 개체의 크기를 반환하는 데 사용할 수 있습니다.



비용<< st.length() <

산출:

11 11

문자열 연결 : 단순히 + 연산자를 사용하여 둘 이상의 문자열을 연결할 수 있습니다.

자바 경로를 변경하는 방법
string new_string = st + '및'+ std_st cout<< new_string <

산출:

안녕하세요 by st, 안녕하세요 by std_st

추가 문자열 : .append (string) 클래스 멤버 함수는 문자열의 특정 문자 위치에 문자열을 연결하고 추가하는 데 사용할 수 있습니다. 프로그래머가 str.append (str1, p, n)을 넣으면 str1 문자열의 p 위치에서 n 개의 문자가 str 끝에 추가됨을 의미합니다.

string str = 'I enjoy learning'string str1 = 'Python, C ++ or C'str.append (str1, 8, 3) cout<< str << endl

산출:

나는 C ++ 배우는 것을 즐긴다

문자열 검색 : find () 멤버 함수를 사용하여 다른 문자열 내에서 첫 번째 문자열을 찾을 수 있습니다. find ()는 pos 위치에서 시작하여 string haystack 내부의 string needle을 찾고 needle이 처음 나타나는 위치를 반환합니다. rfind () 함수는 전달 된 문자열의 마지막 항목을 반환한다는 점을 제외하면 비슷하게 작동합니다.

string haystack = 'Hello World!' 문자열 바늘 = 'o'cout<< haystack.find(needle)<

산출:

44 7 4294967295

첫 번째 cout 명령은 건초 더미 문자열에서 'o'가 처음 나타나는 인덱스 인 '4'를 인쇄합니다. 'World'에서 'o'를 원하면 첫 번째 발생을지나도록 'pos'를 수정해야합니다. haystack.find (needle, 4)는 다시 4를 반환하고 haystack.find (needle, 5)는 7을 반환합니다. 하위 문자열이 없으면 find ()는 std :: string :: npos를 반환합니다.

Npos는 size_type 유형이 나타낼 수있는 최대 값과 동일한 특수 값입니다. 여기서는 4294967295입니다. 일반적으로 문자열 인덱스를 예상하는 함수의 문자열 표시기의 끝으로 사용되거나 문자열 인덱스를 반환하는 함수의 오류 표시기로 사용됩니다.

이 간단한 코드는 str2에서 'C ++'의 모든 항목에 대한 문자열을 검색하고 해당 위치를 인쇄합니다.

string str2 = 'C ++는 객체 지향 프로그래밍 언어이며 클래스, 상속, 다형성, 데이터 추상화 및 캡슐화를 포함합니다 .C ++는 예외 처리를 허용하고 C ++에서 불가능한 함수 오버로딩은 강력하고 효율적이며 빠른 언어입니다. ' for (string :: size_type i = 0, tfind (tfind = wikistr.find ( 'C ++', i))! = string :: npos i = tfind + 1) {std :: cout<< 'Found occurrence of 'C++' at position ' << tfind << std::endl }

산출:

위치 0에서 'C ++'발견 132 위치에서 'C ++'발견 217 위치에서 'C ++'발견
#include using namespace std class base {public : void fun_1 () {cout<< 'base class function 1n' } virtual void fun_2() { cout << 'base class function 2n' } virtual void fun_3() { cout << 'base class function 3n' } virtual void fun_4() { cout << 'base class function 4n' } } class derived : public base { public: void fun_1() { cout << 'derived class function 1n' } void fun_2() { cout << 'derived class function 2n' } void fun_4(int x) { cout fun_2 () // 레이트 바인딩 (RTP) ptr-> fun_3 () // 레이트 바인딩 (RTP) ptr-> fun_4 () // 초기 바인딩이지만이 함수 호출은 // 불법 (오류 발생) 기본 유형 및 함수는 // 파생 클래스 // p-> fun_4 (5)}

산출:

파이썬에서 바이너리로 변환
기본 클래스 함수 1 파생 클래스 함수 2 기본 클래스 함수 3 기본 클래스 함수 4

이것으로 우리는 C ++의 문자열에 대한이 기사를 끝 맺는다. 수행 할 수있는 다양한 작업에 대해 이해 하셨기를 바랍니다. 자세한 내용은 신뢰할 수있는 온라인 학습 회사 인 Edureka의 Java Training을 확인하십시오. 에두 레카 교육 및 인증 과정은 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념에 대해 교육하도록 설계되었습니다.

질문이 있으십니까? 이 블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.