오늘의 오류 시리즈 : substr 함수가 문자열의 단락을 가로 챕니다.

오늘날의 스트링 인터 셉션 경험을 공유하십시오.

문자열의 특정 '하위 문자열'을 끝까지 가로 채고 하나를 공유합니다.

예를 들면 다음과 같습니다
. "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"가 처음 나타나는 위치를 반환합니다.

종료:

공유는 또한 문제에 대한 이해를 높이는 방법이기도합니다. 포괄적이지 않을 수 있지만 확실히 유용하며 나중에 개선 될 것입니다 ~

추천

출처blog.csdn.net/hwx802746/article/details/112170506