C++에서 string 의 용법 과 예 를 자세히 설명 합 니 다.

15322 단어 c + +static사용법
string 은 C++표준 라 이브 러 리 의 중요 한 부분 으로 문자열 처리 에 사 용 됩 니 다.입 출력 흐름 방식 으로 직접 조작 할 수도 있 고 파일 등 수단 으로 조작 할 수도 있다.또한 C++의 알고리즘 라 이브 러 리 는 string 에 도 좋 은 지원 을 하고 string 은 c 언어의 문자열 과 좋 은 인 터 페 이 스 를 가지 고 있 습 니 다.단점 도 있 지만 흠 이 많다.
그 중에서 사용 하 는 코드 는 대부분 cpp 홈 페이지 에서 온 것 입 니 다.예 가 매우 완전 하기 때 문 입 니 다.
설명 및 초기 화 방법:
string 을 사용 하려 면 먼저 헤더 파일 에을 추가 해 야 합 니 다.
성명 방식 도 간단 하 다.
설명:

string s;//    string   
string ss[10];//    string     
초기 화:
등호 의 초기 화 를 사용 하 는 것 을 복사 초기 화 라 고 하고 등호 의 초기 화 를 사용 하지 않 는 것 을 직접 초기 화 라 고 합 니 다.

#include <bits/stdc++.h>
using namespace std;
int main()
{
 ios::sync_with_stdio(false);
 string s;//     ,      
 string s1("ssss");//s1    “ssss”   
 string s2(s1);//s2 s1   
 string s3=s2;//s3 s2   
 string s4(10,'c');// s4   
 string s5="hiya";//     
 string s6=string(10,'c');//     ,           ,   s6
 //string s(cp,n)
 char cs[]="12345";
 string s7(cs,3);//     cs  3    s  
 //string s(s2,pos2)
 string s8="asac";
 string s9(s8,2);// s2          ,    s2 size
 //string s(s2,pos2,len2)
 string s10="qweqweqweq";
 string s11(s10,3,4);//s4 s3   3  4      ,  s3.size     
 return 0;
}
문자열 처리:
substr 동작:
substr 에 매개 변수 로 교체 기 가 없 음 을 주의 하 십시오.

#include <bits/stdc++.h>
using namespace std;
int main()
{
 ios::sync_with_stdio(false);
 string s="abcdefg";
 //s.substr(pos1,n)        pos1   n       
 string s2=s.substr(1,5);//bcdef
 //s.substr(pos)//    pos     
 string s3=s.substr(4);//efg
 return 0;
}
입력 한 위치 가 문자 의 길 이 를 초과 하면 outof_range 의 이상
insert 동작:
코드 는 cpp 홈 페이지 에서 왔 습 니 다.
교체 기 를 매개 변수 로 하 는 것 과 기호 가 없 는 수 를 매개 변수 로 하 는 차이 에 주의 하 세 요.

#include <bits/stdc++.h>
using namespace std;
int main()
{
 ios::sync_with_stdio(false);
 string str="to be question";
 string str2="the ";
 string str3="or not to be";
 string::iterator it;
 //s.insert(pos,str)// s pos    str
 str.insert(6,str2);     // to be the question
 //s.insert(pos,str,a,n) s pos    str     a    n   
 str.insert(6,str3,3,4);    // to be not the question
 //s.insert(pos,cstr,n)// pos    cstr          n   
 str.insert(10,"that is cool",8); // to be not that is the question
 //s.insert(pos,cstr) s pos    cstr
 str.insert(10,"to be ");   // to be not to be that is the question
 //s.insert(pos,n,ch) s.pos      n ch
 str.insert(15,1,':');    // to be not to be: that is the question
 //s.insert(s.it,ch) s it            ch,            
 it = str.insert(str.begin()+5,','); // to be, not to be: that is the question
 //s.insert(s.it,n,ch)// s it          n ch
 str.insert (str.end(),3,'.');  // to be, not to be: that is the question...
 //s.insert(it,str.ita,str.itb) it           [ita,itb)    
 str.insert (it+2,str3.begin(),str3.begin()+3); // to be, or not to be: that is the question...
 return 0;
}
erase 동작:
삭제 작업 수행
삭제 작업 은 세 가지 가 있 습 니 다.
  • pos 와 len 을 지정 합 니 다.그 중에서 pos 는 시작 위치 이 고 pos 와 뒤의 len-1 문자열 은 모두 삭 제 됩 니 다
  • 교체 기,교체 기 가 가리 키 는 문자 삭제
  • 교체 기 범위,이 범위 의 문자열 을 삭제 하고 범 위 는 왼쪽 닫 고 오른쪽 열 림

  • 코드 cpp 홈 페이지 에서
    
    #include <iostream>
    #include <string>
    int main ()
    {
     std::string str ("This is an example sentence.");
     std::cout << str << '
    '; // "This is an example sentence." str.erase (10,8); // ^^^^^^^^ // 8 std::cout << str << '
    '; // "This is an sentence." str.erase (str.begin()+9);// ^ // std::cout << str << '
    '; // "This is a sentence." // ^^^^^ str.erase (str.begin()+5, str.end()-9); // std::cout << str << '
    '; // "This sentence." return 0; }
    append 와 replace 작업:
    append 함 수 는 문자열 의 끝 에 문자 와 문자열 을 추가 할 수 있 습 니 다.string 이 연산 자 를 다시 불 러 왔 기 때문에+=작업 으로 도 가능 합 니 다.
    repalce 는 말 그대로 교체 한 다 는 뜻 으로 먼저 삭제 하고 나중에 증가한다.
    코드 는 cpp 홈 페이지 에서 나 와 자신의 설명 을 첨부 합 니 다.
    
    #include <iostream>
    #include <string>
    int main ()
    {
     std::string str;
     std::string str2="Writing ";
     std::string str3="print 10 and then 5 more";
     //      str2    
     str.append(str2);      // "Writing "
     //    str3 6      3    
     str.append(str3,6,3);     // "10 "
     //         5   
     str.append("dots are cool",5);   // "dots "
     //    
     str.append("here: ");     // "here: "
     //  10 '.'
     str.append(10u,'.');     // ".........."
     //  str3         
     str.append(str3.begin()+8,str3.end()); // " and then 5 more"
     //        ,     5 'A',        65   asc   65
     str.append<int>(5,65);    // "....."
     //                
     str+="lalala";
     std::cout << str << '
    '; return 0; }
    replace 의 사용 방법,replace 는 기호 가 없 는 정수 로 위 치 를 찾 는 것 을 지원 하고 교체 기 로 위 치 를 찾 는 것 도 지원 합 니 다.
    
    #include <iostream>
    #include <string>
    int main ()
    {
     std::string base="this is a test string.";
     std::string str2="n example";
     std::string str3="sample phrase";
     std::string str4="useful.";
     // replace signatures used in the same order as described above:
     // Using positions:     0123456789*123456789*12345
     std::string str=base;   // "this is a test string."
     // 9        4    str2  
     str.replace(9,5,str2);   // "this is an example string." (1)
     // 19         5    str  7        5     
     str.replace(19,6,str3,7,6);  // "this is an example phrase." (2)
     // 8        9           
     str.replace(8,10,"just a");  // "this is just a phrase."  (3)
     // 8        5           7     
     str.replace(8,6,"a shorty",7); // "this is a short phrase." (4)
     // 22     0    3     
     str.replace(22,1,3,'!');  // "this is a short phrase!!!" (5)
     //        
     // Using iterators:            0123456789*123456789*
     str.replace(str.begin(),str.end()-3,str3);     // "sample phrase!!!"  (1)
     str.replace(str.begin(),str.begin()+6,"replace");    // "replace phrase!!!"  (3)
     str.replace(str.begin()+8,str.begin()+14,"is coolness",7); // "replace is cool!!!" (4)
     str.replace(str.begin()+12,str.end()-4,4,'o');    // "replace is cooool!!!" (5)
     str.replace(str.begin()+11,str.end(),str4.begin(),str4.end());// "replace is useful." (6)
     std::cout << str << '
    '; return 0; }
    이상 의 replace 작업 은 insert 와 erase 의 조작 조합 으로 교체 할 수 있 지만 replace 작업 이 더욱 편리 합 니 다.
    할당 동작:
    assign 작업 은 같은 열 용기 에 존재 합 니 다.예 를 들 어 vector 등 입 니 다.매우 기본 적 인 조작 함수 입 니 다.string 은 assign 을 사용 하여 유연 하 게 값 을 부여 할 수 있 습 니 다.
    코드 cpp 홈 페이지 에서
    
    #include <iostream>
    #include <string>
    int main ()
    {
     std::string str;
     std::string base="The quick brown fox jumps over a lazy dog.";
     // used in the same order as described above:
     //   base   str
     str.assign(base);
     std::cout << str << '
    '; // base 10 8 str str.assign(base,10,9); std::cout << str << '
    '; // "brown fox" // 0 6 str str.assign("pangrams are cool",7); std::cout << str << '
    '; // "pangram" // str.assign("c-string"); std::cout << str << '
    '; // "c-string" // str 10 '*' str.assign(10,'*'); std::cout << str << '
    '; // "**********" // 10 '-' str.assign<int>(10,0x2D); std::cout << str << '
    '; // "----------" // base str.assign(base.begin()+16,base.end()-12); std::cout << str << '
    '; // "fox jumps over" return 0; }
    string 검색 동작:
    string 클래스 에 서 는 성능 이 우수 하고 편리 한 구성원 방법 을 많이 제공 합 니 다.그리고 범 형 알고리즘 에 도 실 용적 인 기법 이 많다.
    find 와 rfind 함수:
    find 함 수 는 호출 된 문자열 에 문자열 이 있 는 지,대소 문자 가 민감 한 지 찾 습 니 다.
    코드 cpp 홈 페이지 에서
    
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
     ios::sync_with_stdio(false);
     std::string str ("There are two needles in this haystack with needles.");
     std::string str2 ("needle");
     // different member versions of find in the same order as above:
     // str          needle,          ,      
     std::size_t found = str.find(str2);
     if (found!=std::string::npos)
     std::cout << "first 'needle' found at: " << found << '
    '; // str , found+1 6 found=str.find("needles are small",found+1,6); if (found!=std::string::npos) std::cout << "second 'needle' found at: " << found << '
    '; // str found=str.find("haystack"); if (found!=std::string::npos) std::cout << "'haystack' also found at: " << found << '
    '; // found=str.find('.'); if (found!=std::string::npos) std::cout << "Period found at: " << found << '
    '; // , str2 // let's replace the first needle: str.replace(str.find(str2),str2.length(),"preposition"); std::cout << str << '
    '; return 0; }
    rfind 함 수 는 마지막 으로 나타 난 일치 하 는 문자열 을 찾 는 것 입 니 다.돌아 오 는 위 치 는 여전히 이전 뒤로 세 어 져 있 습 니 다.
    
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
     ios::sync_with_stdio(false);
     std::string str ("The sixth sick sheik's sixth sheep's sick.");
     std::string key ("sixth");//     ^
     //rfind              
     std::size_t found = str.rfind(key);
     if (found!=std::string::npos)
     {
      cout<<found<<endl;//  23
      str.replace (found,key.length(),"seventh");//   sixth   seventh
     }
     std::cout << str << '
    '; return 0; }
    검색 의 효율 이 매우 높 습 니 다.저 는 stl 소스 코드 분석 을 본 적 이 없 지만 kmp 로 이 루어 진 것 같 습 니 다.허허,혼자 쓸 수 있어.
    find_….of 함수:
    
    find_first_of(args)   args               
    find_last_of(args)          
    find_fist_not_of(args)        args    
    find_last_not_of         args      
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
     ios::sync_with_stdio(false);
     std::string str1 ("Please, replace the vowels in this sentence by asterisks.");
     std::size_t found1 = str1.find_first_of("aeiou");
     //         *  
     while (found1!=std::string::npos)
     {
      str1[found1]='*';
      found1=str1.find_first_of("aeiou",found1+1);
     }
     std::cout << str1 << '
    '; // str2 std::string str2 ("look for non-alphabetic characters..."); std::size_t found2 = str2.find_first_not_of("abcdefghijklmnopqrstuvwxyz "); if (found2!=std::string::npos) { std::cout << "The first non-alphabetic character is " << str2[found2]; std::cout << " at position " << found2 << '
    '; } return 0; }
    find_last_of 와 findlast_not_of 는 first 와 기본적으로 같 아서 예 코드 를 쓰 지 않 습 니 다.
    비교 및 변환:
    c 언어의 문자열 비교 함수 strcmp 함수 와 같이 문자열 비교 작업 을 지원 하 는 동시에 python,C\#언어의 함수 와 같이 숫자 와 문자열 변환 을 지원 합 니 다.C++11 에 만 있 는 특성 이 있 습 니 다.
    컴 파일 러 bug 주의:
    MinGW 컴 파 일 러 에서 3.8 보다 버 전이 낮 으 면 c++11 을 지원 하지만 그 안에 bug 가 있 습 니 다.문자열 과 배열 의 변환 을 지원 하지 않 습 니 다!MinGW 버 전 을 업데이트 하거나 g++를 직접 사용 해 야 합 니 다.
    compare 함수:
    strcmp 함수 와 마찬가지 로 두 문자열 이 같 으 면 0 을 되 돌려 주 고 호출 대상 은 매개 변수 반환 1 보다 크 며 반환-1 보다 작 습 니 다.
    compare 에 서 는 부분 비 교 를 지원 하 며 6 개의 매개 변 수 를 설정 할 수 있 습 니 다.
    
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
     ios::sync_with_stdio(false);
     string s1="123",s2="123";
     cout<<s1.compare(s2)<<endl;//0
     s1="123",s2="1234";
     cout<<s1.compare(s2)<<endl;//-1
     s1="1234",s2="123";
     cout<<s1.compare(s2)<<endl;//1
     std::string str1 ("green apple");
     std::string str2 ("red apple");
     if (str1.compare(str2) != 0)
     std::cout << str1 << " is not " << str2 << '
    '; //str1 6 4 if (str1.compare(6,5,"apple") == 0) std::cout << "still, " << str1 << " is an apple
    "; if (str2.compare(str2.size()-5,5,"apple") == 0) std::cout << "and " << str2 << " is also an apple
    "; //str1 6 4 str2 4 4 if (str1.compare(6,5,str2,4,5) == 0) std::cout << "therefore, both are apples
    "; return 0; }
    string 이 연산 자 를 다시 불 러 왔 기 때문에 직접 사용 할 수 있 습 니 다.
    수치 변환:
    io 부분 에 서 는 수치 와 문자열 이 서로 바 뀌 는 예 가 있 습 니 다.stringstream 함 수 를 사용 합 니 다.c+11 에서 정 의 된 기 존 함수 호출 이 있어 서 매우 편리 합 니 다.
    string 과 수치 변환
     
    to_string(val)
    val 을 string 으로 변환 하기
    stoi(s,p,b)
    문자열 s 를 p 에서 b 진 int 로 변환 합 니 다.
    stol(s,p,b)
    long
    stoul(s,p,b)
    unsigned long
    stoll(s,p,b)
    long long
    stoull(s,p,b)
    unsigned long long
    stof(s,p)
    float
    stod(s,p)
    double
    stold(s,p)
    long double
    
    //  ,     MinGw    !    c++11     ,    to_string!
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
     ios::sync_with_stdio(false);
     string s1;
     s1=to_string(100);
     cout<<s1<<endl;
     int a=stoi(s1,0,10)+1;
     cout<<a<<endl;
     return 0;
    }
    총결산
    위 에서 말 한 것 은 편집장 이 여러분 에 게 소개 한 C++에서 string 의 용법 과 예 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 저 에 게 메 시 지 를 남 겨 주세요.편집장 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

    좋은 웹페이지 즐겨찾기