2011-09-28 27 views
52

Tôi muốn nhận được QString từ một số khác QString, khi tôi biết các chỉ mục cần thiết. Ví dụ: Chuỗi chính: "Đây là chuỗi". Tôi muốn tạo mới QString từ 5 ký hiệu đầu tiên và nhận được "Đây".
đầu vào: số char đầu tiên và cuối cùng.
đầu ra: mới QString.Qt. nhận một phần của QString

Cách tạo?

P.S. Không chỉ đầu tiên một vài chữ cái, cũng từ giữa dòng, ví dụ từ 5 đến 8.

Trả lời

35

Sử dụng left chức năng:

QString yourString = "This is a string"; 
QString leftSide = yourString.left(5); 
qDebug() << leftSide; // output "This " 

Cũng có một cái nhìn tại mid() nếu bạn muốn kiểm soát nhiều hơn.

80

Nếu bạn không cần phải sửa đổi chuỗi con, thì bạn có thể sử dụng QStringRef. Lớp QStringRef là một trình bao bọc chỉ đọc xung quanh một hiện tại QString tham chiếu đến chuỗi con trong chuỗi hiện có. Điều này mang lại hiệu suất tốt hơn nhiều so với việc tạo đối tượng QString mới để chứa chuỗi con. Ví dụ.

QString myString("This is a string"); 
QStringRef subString(&myString, 5, 2); // subString contains "is" 

Nếu bạn cần phải sửa đổi các chuỗi, sau đó left(), mid()right() sẽ làm những gì bạn cần ...

QString myString("This is a string"); 
QString subString = myString.mid(5,2); // subString contains "is" 
subString.append("n't"); // subString contains "isn't" 
+1

Trong ví dụ thứ hai của bạn, bạn có thể làm: QStringRef chuỗi con = myString .midRef (5,2); – Keith

+0

@ Với điểm tốt, mặc dù bạn không thể sửa đổi một QStringRef. – Alan

+1

Lưu ý rằng việc sử dụng 'QStringRef' là một tối ưu hóa đi kèm với độ phức tạp bổ sung. Trừ khi bạn đang thực hiện các thao tác chuỗi nặng, và bạn sẽ thực sự được hưởng lợi từ việc tối ưu hóa (trong hầu hết các trường hợp, bạn sẽ không), an toàn hơn và đơn giản hơn để sử dụng 'QString'. –

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