Tôi muốn biết sự khác biệt giữa char *
và 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?
Tôi muốn biết sự khác biệt giữa char *
và 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?
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ớ.
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!
Đơ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.
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ợ.
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
. 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
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
nếu bạn đang lo lắng về chức năng, string
là chứ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 đề
@DavidHeffernan Con mèo có thể ăn bánh quy, bánh quy không thể ăn một con mèo . – Maroun
@SuvP Trong trường hợp cực đoan, bánh quy có thể đến với con mèo. – Maroun
@SuvP Bạn có biết những điểm chung giữa chúng không? – Maroun