Tôi đang cố gắng để so sánh một mảng nhân vật chống lại một chuỗi như vậy:C++ Hãy so sánh mảng char với chuỗi
const char *var1 = " ";
var1 = getenv("myEnvVar");
if(var1 == "dev")
{
// do stuff
}
này nếu tuyên bố không bao giờ xác nhận là đúng ... khi tôi var1 đầu ra nó là "dev" , Tôi đã suy nghĩ có lẽ nó có cái gì để làm với một chuỗi chấm dứt null, nhưng strlen của "dev" và var1 bằng nhau ... Tôi cũng nghĩ có lẽ var1 == "dev" đã so sánh "dev" với vị trí bộ nhớ của var1 thay vì giá trị. * var1 == "dev" kết quả trong một lỗi .... đã thử nhiều thứ, có lẽ là một giải pháp đơn giản cho nhà phát triển davy d ++ (tôi havent được mã hóa C++ trong một thời gian dài).
chỉnh sửa: chúng tôi đã cố gắng
if(strcmp(var1, "dev") == 0)
và
if(strncmp(var1, "dev", 3) == 0)
Cảm ơn
chỉnh sửa: Sau khi thử nghiệm ở nhà tôi chỉ cần đi để đề nghị thay đổi đồng nghiệp của tôi datatype vào một chuỗi. Tôi tin rằng ông đã so sánh một mảng char có kích thước lớn với một chuỗi. Tôi đặt cùng một chương trình mà kết quả đầu ra sizeof, strlen, vv để giúp chúng tôi làm việc thông qua nó. Xin cảm ơn tất cả mọi người vì đã giúp đỡ.
Hình như bạn đang sử dụng chuỗi C thô và không phải là lớp C++ String. – tchen
thử sử dụng trình gỡ lỗi để xem liệu var1 có thực sự được điền bằng "dev1" hay không. Ngoài ra, nếu var1 thực sự là một chuỗi kiểu C++, hãy sử dụng hàm c_str() để lấy chuỗi kiểu c có thể được so sánh với char * của bạn bằng strcmp(); – NomeN
Bạn đã thử strcmp; tuyệt vời - kết quả là gì?(Vì đó là một cách tốt để đi) – xtofl