목차
기본 구문
샘플 코드
일반적인 사용 및 예방 조치
✅ 올바른 사용법
❌ 일반적인 오류
실용적인 팁 : 파일 확장을받습니다
분할 문자열 (간단한 예)
백엔드 개발 C++ C 문자열 기판 예제

C 문자열 기판 예제

Aug 11, 2025 pm 04:30 PM
c++ string

std :: 문자열의 substr () 함수는 하위 문자열을 추출하는 데 사용됩니다. 1. POS는 시작 색인 (0부터 시작)이고 Len은 문자 수 (선택 사항, 기본값)입니다. 2. POS가 문자열의 길이와 같으면 빈 문자열을 반환하십시오. 3. POS가 길이를 초과하면 std :: out_of_range 예외를 던지십시오. 4. Len이 나머지 문자를 초과하면 자동으로 자릅니다. 5. SIZE_T 유형을 사용하여 음수 인덱싱을 피하십시오. 예제에는 고정 길이의 하위 문자열 추출, 파일 확장 획득 및 경로 파일 이름 분할이 포함됩니다. 그것들을 사용할 때는 POS가 예외를 방지하기 위해 효과적인지 확인해야합니다.

C 문자열 기판 예제

C에서 std::stringsubstr() 함수는 문자열에서 하위 문자열을 추출하는 데 사용됩니다. 간단한 구문과 사용하기 쉬운 매우 일반적인 작업입니다.

C 문자열 기판 예제

기본 구문

 문자열 기판 (size_t pos = 0, size_t len = npos) const;
  • pos : 시작 위치 (인덱스, 0부터 시작)
  • len : 추출 할 문자 수 (선택 사항, 문자열 끝의 기본값)

poslen 문자까지 시작하는 서브 스트링이 포함 된 새 문자열을 반환합니다.


샘플 코드

 #include <iostream>
#include <문자열>
네임 스페이스 STD 사용;

int main () {
    문자열 str = "안녕하세요, 세계!";

    // 1. 위치 7에서 시작하여 5 자 String string sub1 = str.substr (7, 5);
    cout << "sub1 :"<< sub1 << endl; // 출력 : 세계

    // 2. 위치 0에서 시작하여 처음 5자를 추출하십시오. string sub2 = str.substr (0, 5);
    cout << "sub2 :"<< sub2 << endl; // 출력 : 안녕하세요

    // 3. 위치 7에서 시작하여 끝까지 추출합니다 (Len을 생략)
    문자열 sub3 = str.substr (7);
    cout << "sub3 :"<< sub3 << endl; // 출력 : 세계!

    // 4. 전체 문자열 추출 문자열 sub4 = str.substr ();
    cout << "sub4 :"<< sub4 << endl; // 출력 : 안녕하세요, 세계!

    // 5. out_of_range 예외는 시작 위치가 길이를 초과하면 {{
        문자열 sub5 = str.substr (20);
        cout << "sub5 :"<< sub5 << endl;
    } catch (const out_of_range & e) {
        cout << "오류 :"<< e.hat () << endl;
    }

    반환 0;
}

일반적인 사용 및 예방 조치

✅ 올바른 사용법

  • 인덱스는 0에서 시작합니다
  • len 나머지 캐릭터를 초과 할 수 있고 substr 자동으로 끝을 가로 채 웁니다.
  • pos == str.length() 인 경우 빈 문자열을 반환하십시오
  • pos > str.length() 인 경우 std::out_of_range 던지십시오

❌ 일반적인 오류

 str.substr (-1, 3); // 오류! POS는 size_t issigned 유형, -1은 최대 값이됩니다.

실용적인 팁 : 파일 확장을받습니다

 문자열 filename = "example.txt";
size_t dotpos = filename.rfind ( &#39;.&#39;);
if (dotpos! = string :: npos) {
    문자열 ext = filename.substr (dotpos 1);
    cout << "확장 :"<< ext << endl; // 출력 : txt
}

분할 문자열 (간단한 예)

 문자열 path = "/home/user/file.txt";
size_t lastslash = path.rfind ( &#39;/&#39;);
if (lastslash! = String :: npos) {
    문자열 filename = path.substr (lastslash 1);
    cout << "filename :"<< filename << endl; // 출력 : file.txt
}

기본적으로 그게 다야. substr() 는 간단하지만 경계 문제를 쉽게 무시합니다. 그것을 사용할 때는 위치가 유효한지 확인하기 위해주의를 기울이십시오.

C 문자열 기판 예제

위 내용은 C 문자열 기판 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제

PHP 튜토리얼
1517
276
간결한 것은 무엇입니까 (동전 증명)? 작동하는 방법? 토큰 경제 및 가격 예측을 증명하십시오 간결한 것은 무엇입니까 (동전 증명)? 작동하는 방법? 토큰 경제 및 가격 예측을 증명하십시오 Aug 06, 2025 pm 06:42 PM

디렉토리 간결한 란 무엇인가 (증명) 간결한 (증명)? 어떤 벤처 캐피탈이 간결한 (증명)를 지원합니까? 간결한 (증명) SP1ZKVM 및 잠재적 인 네트워크 Opsuccinct 기술 크로스 체인 검증은 토큰 경제 토큰 세부 사항 토큰 할당 토큰 유틸리티 잠재적 토큰 보유자를 증명하는 토큰 가격 예측을 증명하는 토큰 프리 마켓 거래 활동을 증명하는 이유를 증명합니다. 성공

C 반복하는 동안 C 벡터에서 지워집니다 C 반복하는 동안 C 벡터에서 지워집니다 Aug 05, 2025 am 09:16 AM

요소를 삭제할 때 반복되는 경우 고장난 반복기를 사용하지 않아야합니다. 올바른 방법은 IT = Vec.erase (IT)를 사용하고 Erase에 의해 반환 된 유효한 반복기를 사용하여 계속 통과하는 것입니다. 배치 삭제에 권장되는 "Erase-Remove"관용구 : vec.erase (std :: remove_if (vec.begin (), vec.end (), 조건), vec.end ()); ③ 리버스 반복기를 사용하여 뒷면에서 앞쪽으로 삭제할 수 있습니다. 논리는 명확하지만 조건 방향에주의를 기울여야합니다. 결론 : 항상 반복 값으로 반복자를 업데이트하고 실패한 반복자의 작업을 금지하면 정의되지 않은 동작이 발생합니다.

간결한 (증명 동전) 가격 예측 : 2025, 2026, 2027-2030 간결한 (증명 동전) 가격 예측 : 2025, 2026, 2027-2030 Aug 11, 2025 am 10:12 AM

디렉토리 간결한 벤처 캐피탈은 간결한 벤처 캐피탈 (증명) 란 무엇입니까 (증명)? 간결한 (증명) 작업 원칙 SP1ZKVM 및 잠수정 네트워크 opsuccinct 기술 크로스 체인 검증 증명 토큰 경제 토큰 세부 사항 2025, 2026, 2027-2030 간결 (증명) 가격 예측 간결 (증명) 가격 예측 (증명) 가격 예측 : 거래량 확장 및 상장 모멘텀 2025-20

C 자동 키워드 예 C 자동 키워드 예 Aug 05, 2025 am 08:58 AM

theautokeywordinc homate -moremaintainable.1.ItreducesVerbosity, 특히 complexTypes liTeritors.2

응용 프로그램이 정상적으로 시작할 수없는 경우 (0xc0000906) 어떻게해야합니까? 여기서 해결책을 참조하십시오 응용 프로그램이 정상적으로 시작할 수없는 경우 (0xc0000906) 어떻게해야합니까? 여기서 해결책을 참조하십시오 Aug 13, 2025 pm 06:42 PM

소프트웨어 나 게임을 열 때 "응용 프로그램이 정상적으로 시작될 수 없음 (0xc0000906)"이 나타나고 많은 사용자가 혼란스러워서 어디서부터 시작 해야할지 모릅니다. 실제로 이러한 오류의 대부분은 시스템 파일의 손상 또는 런타임 라이브러리 누락으로 인해 발생합니다. 시스템을 다시 설치하기 위해 서두르지 마십시오. 이 기사는 프로그램을 신속하게 복원하는 데 도움이되는 몇 가지 간단하고 효과적인 솔루션을 제공합니다. 1. 0xc0000906의 오류는 무엇입니까? 오류 코드 0xc0000906은 Windows Systems의 일반적인 시작 예외입니다. 이는 일반적으로 프로그램이 필요한 시스템 구성 요소 또는 실행중인 실행 환경을로드 할 수 없음을 의미합니다. 이 문제는 종종 큰 소프트웨어 나 게임을 실행할 때 발생합니다. 주된 이유는 다음과 같습니다. 필요한 런타임 라이브러리는 설치되거나 손상되지 않습니다. 소프트웨어 설치 패키지는 끝이 없습니다

C에서 파일의 크기를 얻는 방법 C에서 파일의 크기를 얻는 방법 Aug 11, 2025 pm 12:34 PM

STD :: ifstream의 Seekg 및 TETG 방법을 사용하여 플랫폼에서 파일 크기를 얻으십시오. 이진 파일을 열고 끝까지 위치 시키면 thegg ()를 사용하여 바이트 수를 반환합니다. 2. C 17 이상에 std :: fileSystem :: file_size를 사용하는 것이 좋습니다. 코드는 간결하고 오류는 예외를 통해 처리됩니다. C 17 표준이 활성화되어야합니다. 3. POSIX 시스템에서 STAT () 함수는 성능에 민감한 시나리오에 적합한 파일 크기를 효율적으로 얻는 데 사용될 수 있습니다. 적절한 방법은 컴파일러 및 플랫폼을 기반으로 선택해야하며 std :: 파일 시스템을 먼저 사용해야합니다 (사용 가능한 경우). 그렇지 않으면 Ifstream을 사용하여 호환성을 보장하거나 UNIX 시스템에서 ST를 사용해야합니다.

C STD :: 예제를 축적합니다 C STD :: 예제를 축적합니다 Aug 06, 2025 am 01:18 AM

STD :: 축적은 STL에서 제공하는 데이터 축적에 대한 일반적인 알고리즘입니다. 헤더 파일에 있습니다. 일반적인 용도는 다음과 같습니다. 1. 벡터 요소 합계와 같은 배열 또는 컨테이너의 합계; 2. std :: string ( "")의 초기 값을 지정하여 문자열을 접합하고 문자열 연결 구현; 3. 제품 계산, 조건부 필터링 등과 같은 사용자 정의 작동 기능 또는 Lambda 표현식을 사용할 때는 오류를 피하기 위해 타입 일치, 반복자 간격 정확성 및 초기 값 선택에주의를 기울입니다.

C 메모리 순서 편안한 예 C 메모리 순서 편안한 예 Aug 08, 2025 am 01:00 AM

Memory_order_Relaxed는 카운터, 통계 등과 같은 동기화 또는 순서 보증없이 원자력 만 필요한 시나리오에 적합합니다. 1. Memory_order_Relaxed를 사용하는 경우, 단일 스레드 데이터 의존성이 파괴되지 않는 한 컴파일러 또는 CPU에 의해 작업을 재 배열 할 수 있습니다. 2. 예에서, 다중 스레드는 원자 카운터를 증가시킵니다. 최종 값에만 관심이 있고 작동이 일관되기 때문에 이완 된 메모리 순서는 안전하고 효율적이기 때문입니다. 3. Fetch_add 및 Load는 완화 된 것을 사용할 때 동기화 또는 순차적 제약 조건을 제공하지 않습니다. 4. 오류 예제에서, 생산자 소비자 동기화는 Relaxed를 사용하여 구현되며, 이로 인해 소비자는 주문 보증이 없기 때문에 업데이트되지 않은 데이터 값을 읽을 수 있습니다. 5. 올바른 방법은

See all articles