2013-10-09 14 views
18

tôi phải so sánh hai Qstrings trong qt,Làm thế nào để so sánh hai Qstrings?

nói,

Qstring str1="1005",str2="1006"; 

Tôi đã cố gắng sử dụng,

if(str1==str2){ 
    return true; 
} 

&

if(str1.compare(str2)==0) 
{ 
    return true; 
} 

vẫn cả hai phương pháp đi bên trong nếu điều kiện & trả lại thật.

+0

Vâng, tôi đã kiểm tra như nhau trong chế độ gỡ lỗi và đáng ngạc nhiên nó đang diễn ra bên trong nếu điều kiện. – krohit

+3

Làm thế nào về một SSCCE? Đặc biệt, cho thấy hàm của bạn được trả về khi các chuỗi không bằng nhau. –

+1

Bạn thực sự có nghĩa là 'QString', phải không? Vui lòng cố gắng cung cấp [SSCCE] (http://sscce.org/) mà chúng tôi có thể chỉ dán vào một tệp và xây dựng. – Angew

Trả lời

0

Nó làm việc sau Xây dựng lại các dự án, tôi nghĩ rằng đây là vấn đề với QT CREATOR

+4

Điều này không trả lời cách so sánh hai chuỗi QT. Nó dường như cho thấy rằng bạn đã có một số vấn đề môi trường tạm thời. –

+7

@Maxim Nó không có nghĩa là bạn sẽ downvote.I đã đăng ở đây bởi vì tôi đã không thể tìm ra hành vi kỳ lạ của Qt. Nhưng nếu nó đã được giải quyết bằng cách sửa chữa một số vấn đề liên quan đến môi trường thì đó là trách nhiệm của tôi để cho mọi người biết rằng đó là lỗi của tôi và đóng chủ đề này. – krohit

28

Bạn có thể sử dụng:

int x = QString::compare(str1, str2, Qt::CaseInsensitive); // if strings are equal x should return 0 
+10

Mặc dù câu hỏi hỏi cách so sánh các chuỗi, nhưng đó không phải là * thực sự * những gì nó yêu cầu vì câu hỏi đã chứng minh hai cách so sánh các chuỗi, bao gồm cả các chuỗi được đề xuất trong câu trả lời này. Câu hỏi có nghĩa là hỏi tại sao các so sánh lại xuất hiện để đánh giá các kết quả không mong muốn. Trường hợp độ nhạy không liên quan đến ví dụ được đưa ra. –

+0

Tham số thứ ba có thể được thay đổi theo cách bạn muốn so sánh chúng. Tôi chỉ đưa ra một ví dụ về so sánh các chuỗi. – mcelik

+1

Nhưng OP đã có hai ví dụ về cách so sánh các chuỗi trong câu hỏi của mình, cả hai đều đúng. Vì vậy, đó không phải là vấn đề. –

11

Đoạn code dưới đây hoạt động tốt đối với tôi.

int main(int argv, char **args) 
{ 
    QString str1="1005",str2="1006"; 
    if(str1 == str2) 
     qDebug()<<"This should not print"; 
    qDebug()<<"Everything Ok"; 

} 

Output:

Everything Ok 

Tôi không biết, tại sao mã của bạn không hoạt động, khi được cần phải có được tốt. Kiểm tra lại các phần khác của mã của bạn.