Streams For String C++ - Writes - Dạy Nhau Học Trang chủ » Thư Viện Sstream » Streams For String C++ - Writes - Dạy Nhau Học Có thể bạn quan tâm Thư Viện Stdio.h Thư Viện Stdio.h Có Chức Năng Sử Dụng Các Hàm Thư Viện Stdio.h Dùng để Làm Gì Thư Viện Stdio.h Là Gì Thư Viện Stdio.h Và Conio.h Streams for string C++ share writes tutorial basic c++ nguyenchiemminhvu (NCMV) February 20, 2019, 11:42am #1 Chào các bạn đang theo dõi khóa học lập trình trực tuyến ngôn ngữ C++. Trong các bài học trước, chúng ta thường nhập và xuất dữ liệu sử dụng các đối tượng std::cout, std::cin hay các file streams. Những đối tượng này đóng vai trò là cấu nối trung gian giữa chương trình và các thiết bị, hoặc file. Bên cạnh đó, ngôn ngữ C++ còn định nghĩa thêm một số stream sử dụng cho các đối tượng std::string cho phép chúng ta sử dụng các toán tử (<<) và (>>) để làm việc với std::string. Cũng giống như istream và ostream, string stream cung cấp một buffer để chứa dữ liệu. Tuy nhiên, string stream không kết nối đến các Input/Output channel (như keyboard, monitor, file,…). Stream for string Sau đây là một số stream dùng cho std::string mà ngôn ngữ C++ cung cấp sẵn: istringstream (thừa kế từ istream), ostringstream (thừa kế từ ostream) và stringstream (thừa kế từ iostream). Để sử dụng stringstream, chúng ta cần include thư viện sstream: #include <sstream> Có 2 cách để đưa dữ liệu vào buffer của một đối tượng stringstream: Sử dụng insertion operator (<<): std::stringstream ss; ss << "I'm learning" << " " << "C++ programming language" << std::endl; Set value bằng phương thức str: std::stringstream ss; ss.str("I'm learning C++ programming language\n"); Phương thức str còn được dùng để truy xuất dữ liệu trong một đối tượng stringstream (trả về kiểu std::string): std::stringstream ss; ss << "I'm learning" << " " << "C++ programming language" << std::endl; std::cout << ss.str(); Để lấy dữ liệu từ buffer của đối tượng stringstream đưa vào std::string, chúng ta sử dụng insertion operator (>>): std::stringstream os; os << "12345 67.89"; // insert a string of numbers into the stream std::string strValue; os >> strValue; std::string strValue2; os >> strValue2; // print the numbers separated by a dash std::cout << strValue << " - " << strValue2 << std::endl; Cũng tương tự như khi sử dụng insertion operator (>>) của đối tượng std::cin cho kiểu dữ liệu std::string, kí tự khoảng cách không được đọc vào std::string. Chúng ta có thể sử dụng đặc điểm này để thực hiện split string như sau: std::string data = "Le Tran Dat"; std::stringstream spliter; spliter << data; std::vector<std::string> result; while (!spliter.eof()) { std::string str; spliter >> str; result.push_back(str); } for (int i = 0; i < result.size(); i++) { std::cout << result.at(i) << std::endl; } Đầu tiên chúng ta đẩy tất cả các kí tự đang được lưu trong string data vào đối tượng stringstream, với mỗi lần trích xuất dữ liệu bằng extraction operator (>>) vào một string khác, chúng ta thêm string đó vào vector kết quả. Convert between strings and numbers Vì insertion và extraction operator có thể làm việc với các kiểu dữ liệu cơ bản, chúng ta có thể sử dụng chúng để chuyển đổi strings sang number (và ngược lại). Các bạn thử chạy đoạn chương trình sau để xem cách chuyển đổi từ numbers sang strings: std::stringstream ss; int nValue = 12345; double dValue = 67.89; ss << nValue << " " << dValue; std::string strValue1, strValue2; ss >> strValue1 >> strValue2; std::cout << strValue1 << " " << strValue2 << std::endl; Và đoạn chương trình sau chuyển strings về lại numbers: std::stringstream ss; ss << "12345 67.89"; int nValue; double dValue; ss >> nValue >> dValue; std::cout << nValue << " " << dValue << std::endl; Clear stringstream for reuse Chúng ta có thể dùng một đối tượng stringstream cho nhiều string khác nhau bằng cách xóa dữ liệu bên trong buffer của nó đi. Sau đây là một số cách để xóa dữ liệu trong stringstream buffer: std::stringstream ss; ss.str(""); //erase the buffer ss.clear(); //erase and reset error flags Tổng kết std::stringstream là một class khá hữu ích cho việc thao tác với kiểu dữ liệu std::string và chúng ta sẽ cần dùng chúng cho các công việc sau này. Hẹn gặp lại các bạn trong bài học tiếp theo trong khóa học lập trình C++ hướng thực hành. Mọi ý kiến đóng góp hoặc thắc mắc có thể đặt câu hỏi trực tiếp tại diễn đàn. www.daynhauhoc.com 7 Likes Tổng hợp: Khóa học lập trình C++ dành cho người mới bắt đầu tcm (Người bí ẩn) November 5, 2016, 6:14am #2 nguyenchiemminhvu: Sử dụng insertion operator (<<) nguyenchiemminhvu: chúng ta sử dụng insertion operator (>>): Hình như 2 cái này hơi bựa bựa anh Vũ ơi ? 1 Like ntdong2002 (dong) February 20, 2019, 8:18am #3 Mình xin có ý kiến phần này đề nghị tác giả viết cụ thể để cho người mới học cũng hiểu. Mình cóp 1 số đưa vào chạy thì báo lỗi. Cuối cùng phải dùng Google “stringstream in C++” ra được tutorial in http://www.cplusplus.com/reference/sstream/stringstream/str/. Lúc đó người học dễ hiểu hơn. Mình xin cám ơn. #include <string> // std::string #include <iostream> // std::cout #include <sstream> // std::stringstream, std::stringbuf int main () { std::stringstream ss; ss.str ("Example string"); std::string s = ss.str(); std::cout << s << '\n'; return 0; } jic (le phuc an) April 8, 2019, 8:14am #4 mà cho em hỏi cái stream of string dùng để làm j v anh DayNhauHoc's Discord Học C++ Free? Click Blog Dạy Nhau Học Tự Học Lập Trình 83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao? Từ khóa » Thư Viện Sstream Thư Viện Stringstream Dùng để Làm Gì? - Programming - Dạy Nhau Học Làm Sao để Thêm Thư Viện Sstream Stringstream C++ Là Gì - Apa Sebenarnya Yang Dilakukan ... Xây Dựng Các Chuỗi Thật Nhanh & Tiện Lợi Với Stringstream Các Bạn ... Stringstream C++ Là Gì Cách Sử Dụng Stringstream để Phân Tách Các Chuỗi được ... - HelpEx Ứng Dụng StringStream [Archive] - Cộng đồng C Việt Stringstream C++ Là Gì - Shirohada - C++ Reference Xâu Trong C++ - VNOI Thư Viện Chuẩn C++ – Wikipedia Tiếng Việt [PDF] Bài 12: Đọc/ghi Trên Luồng Và Tệp - UET Io — Core Tools For Working With Streams — Python 3.10.5 ...