我想從連續的字符串數據流中提取線。但數據格式不正確,我想放棄提取的行,以便內存不會超出界限。從連續的字符串流中提取線
例如,我有串行端口輸出,諸如這樣的:
批次1
POS 30 10 20\n
POS 30 10 21\n
POS 30 1
批次2
0 22\n
POS 30 10 23\n
PO
有一種方法,以有效地保存數據和提取線從中?
這是我的代碼:
stringstream ss;
while (SP->IsConnected())
{
string result = SP->ReadData();
ss << result;
string oneline;
while(getline(ss, oneline))
{
cout << oneline << endl;
// or do something more interesting...
}
}
但自從我的函數getline代碼不起作用()修改字符串流,使沒有更多的數據可以被插入到它,我想保持stringstream的內存小了。所以我不認爲我可以使用getline()並使用類似'popline()'的東西(如果存在)。
不確定,但嘗試在內部'while()'循環後調用'ss.clear()'? –
爲什麼不使用'std :: deque'來保存行(每個都是'std :: string')?你想要的是一個「循環緩衝區」,並且流類沒有被設計爲表現這種方式。 (在標準庫中也沒有其他的東西。) – davidbak