C++에서 문자열을 문자열로 변환하는 방법

Jinku Hu 2023년10월12일
  1. std::string 생성자를 사용하여 문자열을 문자열로 변환
  2. 문자열을 문자열로 변환하기 위해 memmove 기능 사용
  3. 문자열을 문자열로 변환하려면 std::basic_string::assign 방법 사용
C++에서 문자열을 문자열로 변환하는 방법

본 기사는 char 배열을 문자열 용기로 변환하는 여러 가지 방법을 소개하고 있다.

std::string 생성자를 사용하여 문자열을 문자열로 변환

이 예에서는 상수 C 문자열을 선언하고 이 문자열을 문자열 구성 매개변수로 사용한다. 이 방법은 문자열 길이를 자동으로 계산한다. 시공자 호출 후 필요에 따라 tmp_string 변수를 조작할 수 있다.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  const char* c_string = "This will be stored in std::string";

  string tmp_string(c_string);
  cout << tmp_string << endl;

  return EXIT_SUCCESS;
}

출력:

This will be stored in std::string

문자열을 문자열로 변환하기 위해 memmove 기능 사용

보다 간단한 방법은 char* 데이터를 초기화된 문자열 용기에 복사하는 것이다. 이런 식으로 memmove 기능으로 전달하려면 char 배열 길이를 미리 알아야 한다. 문자열 컨테이너 초기화는 올바른 동작에 매우 중요하며, 그렇기 때문에 tmp_string 변수를 0x01바이트로 채우는 것이다.

#include <cstring>
#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

constexpr int C_STRING_LENGTH = 34;

int main() {
  const char* c_string = "This will be stored in std::string";
  string tmp_string(C_STRING_LENGTH, 1);

  memmove(&tmp_string[0], c_string, C_STRING_LENGTH);
  cout << tmp_string << endl;

  return EXIT_SUCCESS;
}

다음과 같은 다양한 함수를 사용하여c_string 데이터를tmp_string에 복사 할 수도 있습니다. memcpy, memccpy, mempcpy, strcpy 또는 strncpy, 그러나 매뉴얼 페이지를주의 깊게 읽고 그들의 엣지 케이스/버그를 고려하십시오.

문자열을 문자열로 변환하려면 std::basic_string::assign 방법 사용

앞의 예와 같이 이 방법은 char 배열의 길이를 필요로 한다. 우리는 tmp_ptr라는 이름의 char 포인터를 정의하고 첫 번째 문자의 주소를 tmp_string으로 지정한다.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

constexpr int C_STRING_LENGTH = 34;

int main() {
  const char* c_string = "This will be stored in std::string";
  string tmp_string;

  tmp_string.assign(c_string, C_STRING_LENGTH);
  cout << tmp_string << endl;

  return EXIT_SUCCESS;
}
작가: 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++ Char

관련 문장 - C++ String