C++의 함수에서 문자열을 반환하는 방법

  1. std::string func()표기법을 사용하여 C++의 함수에서 문자열 반환
  2. std::string & func()표기법을 사용하여 함수에서 문자열 반환
  3. char *func()표기법을 사용하여 함수에서 문자열 반환

이 기사에서는 C++의 함수에서 문자열을 반환하는 방법에 대한 몇 가지 방법을 설명합니다.

std::string func()표기법을 사용하여 C++의 함수에서 문자열 반환

값에 의한 반환은 함수에서 문자열 객체를 반환하는 데 선호되는 방법입니다. std::string 클래스에는move 생성자가 있으므로 긴 문자열도 값으로 반환하는 것이 효율적입니다. 객체에move 생성자가 있으면 이동 시맨틱으로 특성화된다고합니다. move-semantics는 객체가 함수 반환시 다른 위치에 복사되지 않으므로 더 빠른 함수 실행 시간을 제공함을 의미합니다.

#include <iostream>
#include <algorithm>
#include <iterator>

using std::cout; using std::endl;
using std::string; using std::reverse;

string ReverseString(string &s){
    string rev(s.rbegin(), s.rend());
    return rev;
}

int main() {
    string str = "This string shall be reversed";

    cout << str << endl;
    cout << ReverseString(str) << endl;

    return EXIT_SUCCESS;
}

산출:

This string shall be reversed
desrever eb llahs gnirts sihT

std::string & func()표기법을 사용하여 함수에서 문자열 반환

이 방법은이 문제에 대한 대안이 될 수있는 참조 표기법에 의한 반환을 사용합니다. 참조에 의한 반환이 큰 구조 나 클래스를 반환하는 가장 효율적인 방법이지만이 경우 이전 방법에 비해 추가 오버 헤드를 부과하지 않습니다. 함수에 선언 된 지역 변수를 참조로 대체해서는 안됩니다. 이것은 댕글 링 참조로 이어집니다.

#include <iostream>
#include <algorithm>
#include <iterator>

using std::cout; using std::endl;
using std::string; using std::reverse;

string &ReverseString(string &s) {
    reverse(s.begin(), s.end());
    return s;
}

int main() {
    string str = "Let this string be reversed";

    cout << str << endl;
    cout << ReverseString(str) << endl;

    return EXIT_SUCCESS;
}

산출:

Let this string be reversed
desrever eb gnirts siht teL

char *func()표기법을 사용하여 함수에서 문자열 반환

또는char *를 사용하여 함수에서 문자열 객체를 반환 할 수 있습니다. std::string 클래스는 문자를 연속 배열로 저장합니다. 따라서 내장 된data()메서드를 호출하여 해당 배열의 첫 번째char 요소에 대한 포인터를 반환 할 수 있습니다. 그러나std::string 객체의 null로 끝나는 문자 배열을 반환 할 때 유사한c_str()메서드를 사용하지 않도록하십시오. 첫 번째char 요소에 대한const 포인터를 대체하기 때문입니다.

#include <iostream>
#include <algorithm>
#include <iterator>

using std::cout; using std::endl;
using std::string; using std::reverse;

char *ReverseString(string &s) {
    reverse(s.begin(), s.end());
    return s.data();
}

int main() {
    string str = "This string must be reversed";

    cout << str << endl;
    cout << ReverseString(str) << endl;

    return EXIT_SUCCESS;
}

산출:

This string must be reversed
desrever eb tsum gnirts sihT

관련 문장 - C++ String

  • 문자열이 C++의 숫자인지 확인하는 방법
  • C++에서 두 문자열을 연결하는 방법