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

Jinku Hu 2023년10월12일
  1. std::string func()표기법을 사용하여 C++의 함수에서 문자열 반환
  2. std::string & func()표기법을 사용하여 함수에서 문자열 반환
  3. char *func()표기법을 사용하여 함수에서 문자열 반환
C++의 함수에서 문자열을 반환하는 방법

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

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

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

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

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

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 <algorithm>
#include <iostream>
#include <iterator>

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

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 <algorithm>
#include <iostream>
#include <iterator>

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

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
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - C++ String