Làm cách nào để buộc std :: stringstream operator >> đọc toàn bộ chuỗi thay vì dừng ở khoảng trắng đầu tiên?Làm thế nào để buộc std :: stringstream operator >> để đọc toàn bộ chuỗi?
Tôi đã có một lớp mẫu mà các cửa hàng một giá trị đọc từ một tập tin văn bản:
template <typename T>
class ValueContainer
{
protected:
T m_value;
public:
/* ... */
virtual void fromString(std::string & str)
{
std::stringstream ss;
ss << str;
ss >> m_value;
}
/* ... */
};
tôi đã cố gắng thiết lập/unset cờ dòng nhưng nó đã không giúp đỡ.
Làm rõ
Lớp là một mẫu container với chuyển đổi tự động đến/từ loại Strings T. được chỉ có một thể hiện của các mẫu, nó cũng phải hỗ trợ nhiều loại khác nữa. Đó là lý do tại sao tôi muốn ép buộc toán tử >> bắt chước hành vi của std :: getline.
Tôi không rõ vấn đề là gì. Nếu bạn muốn '>>' làm việc với lớp 'T', bạn cần ghi đè' >> 'như vậy ' stringstream & operator >> (T & receiver) '. Trong hàm này, bạn có quyền truy cập vào 'stringstream' (thông qua' this') và tới 'receiver' và bạn có thể sữa ra khỏi' * this' bất cứ lượng dữ liệu nào bạn muốn. Bạn có thể giải thích rõ hơn vấn đề không? – Ari
Xin lỗi, đó là 'stringstream & operator >> (stringstream & ss, T & receiver)', tất nhiên, và bạn truy cập trực tiếp 'ss'. – Ari