2012-12-12 36 views
8

Tôi gặp sự cố. Tôi tải toàn bộ tập tin và sau đó getline thông qua nó để có được một số thông tin. Tuy nhiên ở định dạng bản đồ có thể có 0 hoặc 20 "dòng" với thông tin. Tôi cần phải biết làm thế nào để getline thông qua std :: string. Có một hàm (luồng nguồn, chuỗi đích, số thập phân) nhưng tôi cần (chuỗi nguồn, chuỗi đích, số thập phân). Không thể tìm kiếm trong các luồng trong C++ (chỉ sử dụng nhiều chuỗi tạm thời và trích xuất và chèn nhiều lần, không rõ ràng và tôi không muốn làm điều đó theo cách lộn xộn). Vì vậy, tôi muốn biết làm thế nào để getline từ một std :: string.Cách thực hiện "getline" từ chuỗi std ::?

thans

Trả lời

17

Bạn dường như muốn std::istringstream, đó là trong tiêu đề <sstream>:

std::string some_string = "..."; 

std::istringstream iss(some_string); 

std::string line; 
while (std::getline(iss, line)) 
{ 
    // Do something with `line` 
} 
+0

Cảm ơn. Câu hỏi đơn giản liên quan đến nó. Làm thế nào để làm cho getline KHÔNG để có được một dòng khi không có thập phân tìm thấy trong dòng? – user1873947

+0

Bởi vì đó vẫn là một vấn đề khi tôi không thể tìm kiếm trong một luồng (đó là lý do tại sao tôi muốn chuỗi getline không tồn tại). – user1873947

+0

@ user1873947 Cách đơn giản nhất có thể là kiểm tra xem chuỗi bạn sử dụng có chứa chữ số hay không và sau đó bỏ qua toàn bộ 'std :: istringstream' /' std :: getline' bit. –

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