tôi có mã này,Tại sao stringstreams rdbuf() và str() cho tôi đầu ra khác nhau?
int main()
{
std::string st;
std::stringstream ss;
ss<<"hej hej med dig"<<std::endl;
std::getline(ss,st,' ');
std::cout <<"ss.rdbuf()->str() : " << ss.rdbuf()->str();
std::cout <<"ss.rdbuf() : " << ss.rdbuf();
return 0;
}
Cho tôi ra này
ss.rdbuf() -> str(): hej hej MED đào
ss.rdbuf(): hej med dig
Nhưng tại sao vậy? Có phải vì định nghĩa ostreams của nhà điều hành < str() cho tôi đầu ra khác nhau. Trong mắt tôi, đầu ra sẽ giống nhau ngay cả khi tôi đã sử dụng đường dây.
Ồ. Thực tế là tôi đã không tìm thấy nó trong một trong những cuốn sách đắt tiền của tôi C++ là Im trên một kỳ nghỉ, vì vậy tôi chỉ có google và tôi couldnt tìm thấy một trang web giải thích hành vi << nhà điều hành theo một cách mà tôi hiểu. Tôi thực sự nghĩ rằng getline gỡ bỏ thẻ với delim từ dòng. – mslot
Tôi không sử dụng một trong những cuốn sách C++ đắt tiền. Tôi chỉ thiếu rằng hành vi này không phải là rbuf() được chỉ định và bắt đầu tìm kiếm tiêu chuẩn cho toán tử quá tải này <<. – bayda
http://ra.dkuug.dk/jtc1/sc22/open/n2356/ - bản thảo tiêu chuẩn C++ miễn phí – bayda