[학습 노트] 제1 강: STL 의 string 유형의 사용 방법
1. string 의 구조 함수
1. 기본 구조 함수
string();
예: string str1;
2. 복사 구조 함수
string(const string &str);
예: string str2(sr1);
3. 파 라 메 트릭 함수
string(const char *s);
예: string str3("abcdef");
string(int n, char c);
문자열 str4(5, 'a');
----------------------------------------------------------------------------------------------------------------------
2. string 의 할당
string &operator=(const string &s);
예:
string str1 = "abc";
string str2 = str1;
string &assign(const char *s);
예: str. assign ("abcdef");
string &assign(const char *s, int n);
예: str. assign ("abcdef", 3);
string &assign(const string &s, int start, int n);
예: str. assign ("abcdefgh", 2, 2);
----------------------------------------------------------------------------------------------------------------------
3. string 류 의 문자 조작
1. 문자열 의 어떤 문 자 를 가 져 오고 연산 자 [] 를 사용 합 니 다.
const char &operator[](int n) const;
예:
string str = "abcdefg";
char ch1 = str[2];
2. 문자열 의 어떤 문 자 를 at 로 가 져 옵 니 다.
const char &at(int n) const;
char ch2 = str. at (2); / / 경 계 를 넘 으 면 이상 을 던 져 캡 처 할 수 있 습 니 다.
3. 문자열 의 한 문 자 를 수정 하고 연산 자 [] 를 사용 합 니 다.
char &operator[](int);
str [3] = 'z';
4. 문자열 의 어떤 문 자 를 수정 하려 면 at 를 사용 하 십시오.
char &at(int n);
예: str. at (4) = 'x';
----------------------------------------------------------------------------------------------------------------------
문자열 출력
예: cout < < str. c str ();
헤더 파일 \ # include < string > 이 포함 되 어 있 으 면 직접 출력 할 수 있 습 니 다: cout < < str < endl;
----------------------------------------------------------------------------------------------------------------------
5. string 을 char * 가 가리 키 는 메모리 공간 으로 복사 합 니 다.
int copy(char *s, int n, int pos=0);
char *s: 복사 할 대상 위치
int 카피 개수
int pos: 복사 의 시작 위치, 기본 값 0 을 입력 하지 않 습 니 다.
반환 값: 복사 개수
예:
string str = "abcdef";
char ch[100] = {0};
int count = str.copy(ch, 5);
----------------------------------------------------------------------------------------------------------------------
6. string 의 길이
int length() const; //문자열 길 이 를 되 돌려 줍 니 다. '\ 0' 은 포함 되 지 않 습 니 다.
int lenth = str.length();
int size() const; / / 같은 길이 ()
int strSize = str.size();
bool empty() const; / 현재 문자열 이 비어 있 는 지 판단 합 니 다.
bool flag = str.empty();
----------------------------------------------------------------------------------------------------------------------
문자열 비교
int compare(const string &s) const; / / 사전 순 으로 앞 선 것 보다 작 습 니 다. >: 1 을 되 돌려 줍 니 다. <: 1 을 되 돌려 줍 니 다. =: 0 을 되 돌려 줍 니 다.
예:
string str1 = "abc";
string str2 = "xyz";
str1.compare(str2);
int compare(const char *s) const; / / 사전 순 으로 앞 선 것 보다 작 습 니 다. >: 1 을 되 돌려 줍 니 다. <: 1 을 되 돌려 줍 니 다. =: 0 을 되 돌려 줍 니 다.
예:
strint str1 = "abc";
char *ch = "xyz";
str1.compare(ch);
----------------------------------------------------------------------------------------------------------------------
8. string 의 하위 문자열
string substr(ing pos = 0, int n = npos) const;
예:
string str = "abc";
str.substr(0, 2);
----------------------------------------------------------------------------------------------------------------------
9. 문자열 연결 --- 증가
string &operator+=(const string &s);
예:
string str1 = "hello";
string str2 = " world";
string str1 += str2;
string &operator+=(const char *s);
예:
string str1 = "hello";
char *ch = " world";
str1 += ch;
string &append(const char *s);
예: str. append ("xyz");
string &append(const char *s, int n);
예: str. append ("xyz", 3);
string &append(const string &s, int pos, int n);
예: str. append ("xyz", 1, 2);
----------------------------------------------------------------------------------------------------------------------
10. string 의 삽입 --- 증가
string &insert(int pos, const char *s);
예:
string str = "abcdef";
str.insert(1, "xxx");
string &insert(int pos, const string &s);
예:
string str1 = "abcdef";
string str2 = "xxx";
str1.insert(1, str2);
string &insert(int pos, int n, char c);
예:
string str("abcdef");
str.insert(1, 3, 'x');
----------------------------------------------------------------------------------------------------------------------
11. string 의 삭제 - 삭제
string &erase(int pos = 0, int n);
int pos: 삭제 할 시작 위치
int 삭제 할 개수
예:
string str("abcdef");
str.erase(2, 3);
----------------------------------------------------------------------------------------------------------------------
12. string 의 교체
string &replace(int pos, int n, const string s)
예:
string str = "abcdef";
str.replace(2, 2, "-----");
----------------------------------------------------------------------------------------------------------------------
13. string 의 교환 --- 변경
1. void swap(string &str1, string &str2);
예:
string str1 = "hello";
string str2 = "world";
swap(str1, str2);
2.str1.swap(sr2)
예:
string str1 = "hello";
string str2 = "world";
str1.swap(sr2);
----------------------------------------------------------------------------------------------------------------------
14. string 의 찾기 --- 조사
1. 정방 향 찾기
int find(char c, int pos = 0) const; / / 문자 찾기
예: str. find ('c');
int find(const char *s, int pos = 0) const; / 문자열 찾기
예:
string str("abcdef");
char *ch = "ef";
str.find(ch, 0);
int find(const sring &s, int pos = 0) const; / / 되 돌 릴 수 없 음 - 1
예:
string str1("abcdef");
string str2("de");
str1.find(str2, 0);
2. 역방향 찾기
int rfind(char c, int pos = npos) const;
예:
string str("abcdefg");
str.rfind('g', str.length()-1);
int rfind(const char *s, int pos = npos) const;
예:
string str("abcdef");
str.rfind("ef", str.length() - 1);
int rfind(const string &s, int pos = npos) const;
예:
string str("abcdef");
str.rfind("ef", str.length() - 1);
----------------------------------------------------------------------------------------------------------------------
15. string 과 wtring 의 전환
1. 윈도 API 함수 호출:
WideCharToMultiByte();
MultiByteToWideChar();
예:
//utf-8 unicode
wchar_t *Utf_8ToUnicode(char* szU8)
{
//UTF8 to Unicode
// , , 16
// ,
int wcsLen = ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, 0);
// '\0' ,MultiByteToWideChar '\0'
wchar_t* wszString = new wchar_t[wcsLen + 1];
//
::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), wszString, wcsLen);
// '\0'
wszString[wcsLen] = '\0';
return wszString;
}
//unicode utf-8
char* UnicodeToUTF_8First(CString str)
{
int u8Len =WideCharToMultiByte(CP_UTF8, NULL,CStringW(str),str.GetLength(), NULL, 0, NULL, NULL);
char* szU8 = new char[u8Len + 1];
WideCharToMultiByte(CP_UTF8, NULL, CStringW(str), str.GetLength(), szU8, u8Len, NULL, NULL);
szU8[u8Len] = '\0';
return szU8;
}
2. ATL 의 CA2W 클래스 와 CW2A 클래스 를 사용 하거나 매크로 A2W 와 W2A 를 사용 합 니 다.
3. 크로스 플랫폼 방법: CRT 라 이브 러 리 의 mbstowcs () 함수 와 wcstombs () 함 수 를 사용 하여 locale 을 설정 해 야 합 니 다.
예:
#include "stdafx.h"
#include <locale>
#include <iostream>
using namespace std;
string ws2s(const wstring &ws)
{
string curLocale = setlocale(LC_ALL,NULL); //curLocale="C"
setlocale(LC_ALL, "chs");
const wchar_t *_Source = ws.c_str();
size_t _Dsize = 2*ws.size()+1;
char * _Dest = new char[_Dsize];
memset(_Dest, 0, _Dsize);
wcstombs(_Dest, _Source, _Dsize);
string result = _Dest;
delete[] _Dest;
setlocale(LC_ALL, curLocale.c_str());
return result;
}
wstring s2ws(const string &s)
{
string curLocale = setlocale(LC_ALL, NULL);
setlocale(LC_ALL, "chs");
const char *_Source = s.c_str();
size_t _Dsize = s.size() + 1;
wchar_t *_Dest = new wchar_t[_Dsize];
wmemset(_Dest, 0, _Dsize);
mbstowcs(_Dest, _Source, _Dsize);
wstring result = _Dest;
delete [] _Dest;
setlocale(LC_ALL, curLocale.c_str());
return result;
}
int main(int argc, char* argv[])
{
wstring str1=L"abcdef";
string str2 = ws2s(str1);
wstring str3 = s2ws(str2);
wcout<<str1.c_str()<<endl;
cout<<str2.c_str()<<endl;
wcout<<str3.c_str()<<endl;
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Access Request, Session and Application in Struts2If we want to use request, Session and application in JSP, what should we do? We can obtain Map type objects such as Req...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.