C++에서 string 의 용법 과 예 를 자세히 설명 합 니 다.
그 중에서 사용 하 는 코드 는 대부분 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 동작:삭제 작업 수행
삭제 작업 은 세 가지 가 있 습 니 다.
#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 의 용법 과 예 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 저 에 게 메 시 지 를 남 겨 주세요.편집장 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
hdu 1717 소수 화 점수 2 (수학)소수 화 점수 2 레이 는 수학 시간 에 선생님 의 말씀 을 듣 고 모든 소수 가 점수 로 표시 되 는 형식 이 라 고 말 했다. 그 는 녹 기 시 작 했 고 곧 완성 되 었 다. 그러나 그 는 또 하나의 문 제 를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.