2013-06-18 61 views
6

Tôi muốn biết sự khác biệt giữa char *string. ví dụ: trong mã này:sự khác biệt giữa char * và chuỗi

char *a; 
string b; 

Mọi người có thể giúp tôi không?

+1

@DavidHeffernan Con mèo có thể ăn bánh quy, bánh quy không thể ăn một con mèo . – Maroun

+0

@SuvP Trong trường hợp cực đoan, bánh quy có thể đến với con mèo. – Maroun

+0

@SuvP Bạn có biết những điểm chung giữa chúng không? – Maroun

Trả lời

13

Giả sử bạn đang đề cập đến std::string, string là một lớp thư viện chuẩn mô hình hóa một chuỗi.

char * chỉ là một con trỏ đến một char đơn lẻ. Trong C và C++, các hàm khác nhau tồn tại sẽ lấy một con trỏ tới một char duy nhất làm tham số và sẽ theo dõi dọc theo bộ nhớ cho đến khi đạt được giá trị bộ nhớ 0 (thường được gọi là null terminator). Theo cách đó, nó mô hình hóa một chuỗi ký tự; strlen là một ví dụ về một hàm (từ thư viện chuẩn C) thực hiện điều này.

Nếu bạn có lựa chọn, hãy sử dụng std::string vì bạn không phải lo lắng về chính mình với bộ nhớ.

3

char* là một con trỏ đến một loại nguyên thủy: char

string là một đối tượng lớp đầu tiên từ Standard Template Library rằng kết thúc tốt đẹp rất nhiều chức năng (như concatenating hai chuỗi) và làm cho nó dễ dàng hơn để làm việc với.

2 thực thể rất khác nhau!

0

Đơn giản, char *a; khai báo một con trỏ 'a' thuộc loại char, nó sẽ trỏ đến chuỗi hoặc chuỗi ký tự không đổi. String b; tuyên bố b như một đối tượng của string type.String đây là một lớp học, trong đó có một số chức năng thành viên chuỗi thao tác (phương pháp) .Bạn có thể nhìn vào đây để biết thêm chi tiết: http://www.cplusplus.com/reference/string/string/

Một chương trình ví dụ mô tả các đối tượng string và chức năng thành viên được đưa ra dưới đây:

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

int main() 
{ 
    string str ("steve jobson"); 
    cout <<"hello the name of steve jobs consists of"<< str.size() << " characters.\n"; 
    return 0; 
} 

str được khai báo là đối tượng chuỗi và các thành viên chức năng size() được gọi là để có được kích thước của str.

0

char* cũng có thể là con trỏ tới vị trí 0 (đầu tiên) của một mảng ký tự. Nó được sử dụng thường xuyên trong C, trong đó việc sử dụng String không được hỗ trợ.

+0

nếu bạn khai báo char một con trỏ tới một mảng ký tự thì câu trả lời của bạn sẽ đúng, nhưng ở đây một số thứ khác, một ký tự đơn của nó là – 0decimal0

+0

. mảng với một ô. * a đề cập đến giá trị của nó, trong khi & a đề cập đến địa chỉ của nó trong bộ nhớ. – brbtsl

+0

tôi không hiểu mảng nào bạn đang đề cập đến, "hợp lý" hoặc "vật lý". – 0decimal0

0

nếu bạn đang lo lắng về chức năng, stringchức năngchar* i.e bạn không cần phải lo lắng về space

char *

khai/khởi tạo: char* str = "Use";

phụ thêm: XXX

chiều dài phát hiện: strlen(str); // cần phải bao gồm <string.h> hoặc tạo của riêng bạn

chuỗi

khai/khởi tạo: string str = "Use";

phụ thêm: str += " This!"

chiều dài phát hiện: str.length() // tất cả trong một tập tin tiêu đề

Các vấn đề liên quan