오늘날의 스트링 인터 셉션 경험을 공유하십시오.
오늘의 오류 기록 :
문자열의 특정 '하위 문자열'을 끝까지 가로 채고 하나를 공유합니다.
예를 들면 다음과 같습니다
. "aaa bbb ccc, I love CSDN!"문자열에서 문자열 "I"뒤의 모든 문자열을 가로 챕니다.
[예제에서는 문자열에 'I'가 하나 밖에 없지만 진실은 동일합니다.]
#include <iostream>
using namespace std;
int main()
{
string str = "aaa bbb ccc , I love CSDN !";
int pos = str.find("I"); // 在字符串str中找到字符串 "I" 出现的位置
string str2 = str.substr(pos); // 在字符串str中,从"I" 出现的位置开始截取至结束
cout <<"截取后的字符串为:" << str2.c_str() << endl;
}
산출:
截取后的字符串为:I love CSDN !
요약 : str.substr (pos); pos의 위치에서 문자열의 마지막 비트까지의 문자열을 나타냅니다.
둘을 공유하고 문자열 변수의 특정 세그먼트를 가로 채
예를 들면 다음과 같은 제목이 있습니다.
"aaa bbb ccc, I love CSDN!"문자열에서 14 번째 위치에서 13 개의 문자가 차단됩니다.
#include <iostream>
using namespace std;
int main()
{
string str = "aaa bbb ccc , I love CSDN !";
string str2 = str.substr(14,13); // 14表示要截取的字符串的开始的位置,13代表要截取的字符串的长度。
cout << "截取后的字符串为:" << str2.c_str() << endl;
}
산출:
截取后的字符串为:I love CSDN !
요약 : str.substr (pos, n); pos는 인터셉트 할 문자열의 시작 위치를 나타내고 n은 인터셉트 할 문자열의 길이를 나타냅니다.
세 공유, c_str () 보충
신중한 학생들이 문자열을 출력 할 때 다음과 같이 출력된다는 것을 알게 된 것으로 추정됩니다.
str2.c_str()
.c_str이 끝에 추가되는 이유는 무엇입니까?
추가하지 않으면 다음과 같은 오류가보고됩니다.
错误 C2679 二进制“<<”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)
이유는 다음과 같습니다. 문자열 유형에 과부하 << 기호가 없습니다.
따라서 문자열을 출력 할 때 c_str () 메서드를 호출하여 해결할 수 있습니다.
네 공유, 보충 find ()
Str.find ( "I"); 위의 공유에서 사용됩니다.
문자열 "I"가 처음 나타나는 위치를 반환합니다.
종료:
공유는 또한 문제에 대한 이해를 높이는 방법이기도합니다. 포괄적이지 않을 수 있지만 확실히 유용하며 나중에 개선 될 것입니다 ~