Hỏi về stringstream C++

Mình có 2 đoạn code sau:

std::string temp;
std::string line1 = "aaa";
std::string line2 = "bbb";

std::stringstream os(line1);
os>>temp;
os.clear();
os<<line2;  //(I)
os>>temp; //temp vẫn là "aaa"

std::string temp;
std::string line1 = "aaa";
std::string line2 = "bbb";

std::stringstream os;
os<<line1;
os>>temp;
os.clear()
os<<line2; //(II)
os>>temp; //temp mang giá trị "bbb"

Mình có thử debug thì sau khi thực hiện lệnh tại vị trí (I) thì os là “bbb”, còn vị trí 2 thì os là “aaabbb”. Tại sao lại có sự khác nhau về os và temp như vậy, và tạo sao temp của đoạn code 1 lại là “aaa”. Mình biết cách mình hỏi hơi khó hiểu. Mong mọi người giải thích giúp mình!

os.clear(); để làm gì vậy? :V Nó có phải hàm thực hiện việc bạn muốn làm ko?

2 Likes

vì không dùng os.clear() thì khi các lệnh os << line; chạy os vẫn không có gì thay đổi

lệnh cần dùng để “reset” stringstream lại là os.str("") :V Bỏ cái os.clear() đi

kể cũng lạ, có cái chuỗi để khởi tạo thì nó ko cho append thêm vào khi đã extract :V Khởi tạo thế này thì ok? stringstream ss(line1, std::ios::app | std::ios::in | std::ios::out)

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?