Hàm getline () đến từ đâu?

Sep 04 2020

Tôi đang bắt đầu học C ++ cách đây ít lâu. Đã biết về các tệp tiêu đề và các câu lệnh tiền xử lý.

Tôi biết rằng std :: cin và std :: cout là các đối tượng / Hàm được khai báo trong thư viện chuẩn IOSTREAM. Nhưng khi lấy đầu vào là một chuỗi và để đọc cả dòng. Chúng ta phải sử dụng hàm getline () hoặc ít nhất là người hướng dẫn đang sử dụng nó trong video.

Bây giờ tôi đã kiểm tra trên internet và hầu hết các trang web đang hiển thị rằng getline () được xác định trong tệp / Thư viện STRING . Nhưng vấn đề là chương trình của tôi hoạt động hoàn toàn tốt ngay cả khi không bao gồm tệp chuỗi. Vì vậy, những gì tôi đang thiếu.? hoặc làm sai điều gì đó. và nếu bạn có thể, vui lòng giải thích cách hoạt động của hàm getline. và cũng xin vui lòng cho biết sự khác biệt thực sự giữa sử dụng không gian tên std và sử dụng std :: Cảm ơn bạn

#include <iostream> 

int main() 
{ 
    std::string str; 
  
    std::cout << "Please enter your name: \n"; 
    getline(std::cin, str); 
    std::cout << "Hello, " << str 
         << " welcome to GfG !\n"; 
  
    return 0; 
} 

Trả lời

1 VladfromMoscow Sep 04 2020 at 12:11

Bạn phải bao gồm tiêu đề <string>để sử dụng hàm std::getline. Nó được thực hiện xác định xem tiêu đề <iostream>có bao gồm tiêu đề hay không <string>.

Trong cuộc gọi này sử dụng tên không đủ tiêu chuẩn getline

getline(std::cin, str);

trình biên dịch áp dụng ADL tra cứu đối số phụ thuộc (đối số đầu tiên std::cinđược xác định trong không gian tên std::) và tìm tên tương ứng std::getlinetrong không gian tên std::.