Computer >> Máy Tính >  >> Lập trình >> C ++

Làm cách nào để chuyển đổi chuỗi std ::thành const char * hoặc char * trong C ++?


Trong phần này, chúng ta sẽ xem cách chuyển chuỗi C ++ (std ::string) thành const char * hoặc char *. Các định dạng này là C kiểu chuỗi. Chúng ta có một hàm được gọi là c_str (). Điều này sẽ giúp chúng tôi thực hiện nhiệm vụ. Nó trả về một con trỏ đến một mảng có chứa chuỗi ký tự được kết thúc bằng null (tức là chuỗi C) đại diện cho giá trị hiện tại của đối tượng chuỗi.

Sau đây là khai báo cho std ::string ::c_str.

const char* c_str() const;

Hàm này trả về một con trỏ đến một mảng có chứa chuỗi ký tự kết thúc bằng rỗng (tức là chuỗi C) đại diện cho giá trị hiện tại của đối tượng chuỗi. Nếu một ngoại lệ được đưa ra, thì không có thay đổi nào trong chuỗi.

Mã mẫu

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

int main () {
   std::string str ("Please divide this sentence into parts");

   char * cstr = new char [str.length()+1];
   std::strcpy (cstr, str.c_str());

   char * p = std::strtok (cstr," ");
   while (p!=0) {
      std::cout << p << '\n';
      p = std::strtok(NULL," ");
   }
   delete[] cstr;
   return 0;
}

Đầu ra

Please
divide
this
sentence
into
parts