C++의 함수에서 문자열을 반환하는 방법
-
std::string func()
표기법을 사용하여 C++의 함수에서 문자열 반환 -
std::string & func()
표기법을 사용하여 함수에서 문자열 반환 -
char *func()
표기법을 사용하여 함수에서 문자열 반환
이 기사에서는 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
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