Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

แปลง String เป็น Char Array ใน C++

นี่คือโปรแกรม C++ สำหรับแปลง string เป็น char array สามารถทำได้หลายวิธี

วิธีที่ 1: คัดลอกตัวต่อตัวด้วยลูป

อัลกอริธึม

  1. กำหนดค่าให้ char array m
  2. ลูป i = 0 ถึง sizeof(m)-1
  3. คัดลอก m[i] ไป str[i] และพิมพ์

โค้ดตัวอย่าง

#include <iostream>
#include <string.h>
using namespace std;

int main() {
    char m[] = "Tutorialspoint";
    string str;
    str.resize(sizeof(m)); // จัดสรรพื้นที่
    for(int i = 0; i < sizeof(m); i++) {
        str[i] = m[i];
        cout << str[i];
    }
    return 0;
}

วิธีที่ 2: ใช้ strcpy()

คัดลอกเนื้อหา string ไป char array ด้วย strcpy()

อัลกอริธึม

  1. กำหนดค่าให้ string str
  2. คัดลอกเนื้อหาไป char array ด้วย strcpy()

โค้ดตัวอย่าง

#include <iostream>
#include <string>
#include <cstring>
using namespace std;

int main() {
    string str = "Tutorialspoint";
    char c[str.size() + 1]; // +1 สำหรับ null terminator
    strcpy(c, str.c_str());
    cout << c << '\n';
    return 0;
}

ผลลัพธ์

Tutorialspoint

วิธีที่ 3: ใช้ std::string::copy()

หลีกเลี่ยง strcpy() ซึ่งเป็น C-style ด้วย copy() ของ string

อัลกอริธึม

  1. กำหนดค่าให้ string str
  2. คัดลอกเนื้อหาไป char array ด้วย copy()
  3. เพิ่ม null terminator เอง

โค้ดตัวอย่าง

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str = "Tutorialspoint";
    char c[str.size() + 1];
    str.copy(c, str.size() + 1);
    c[str.size()] = '\0'; // สำคัญ: ต้องใส่ null terminator เอง
    cout << c << '\n';
    return 0;
}

ผลลัพธ์

Tutorialspoint

วิธีที่ 4 (แนะนำ): ใช้ c_str() หรือ data()

หากแค่ต้องการ pointer ไปยังข้อมูลแบบ null-terminated:

const char* ptr = str.c_str(); // คืน const char* ที่มี \0 ท้าย
// หรือ
const char* ptr = str.data();  // C++11: คืน const char* (ไม่รับประกัน \0 ก่อน C++11)

ไม่ต้องคัดลอก หากไม่ต้องแก้ไขข้อมูล