我需要寫char*
緩衝區std::stringstream
在特定的位置,通過API讀寫我設法拼湊下面的代碼:如何在位置字符串流
std::stringstream ss;
char * str = "123";
ss.seekp(0);
ss.write(str, 3);
ss.seekp(1);
ss.write(str, 3);
std::cout << ss.str(); //expecting 1123
但是不能按預期工作 - 或者更準確地說根本不起作用(沒有任何被寫入流中),原因似乎是.seekp()
。
我好不容易纔確認我suspition:在.seekp()
惹的禍,消除ss.seekp(0)
後:
std::stringstream ss;
char * str = "123";
// remove this line: ss.seekp(0);
ss.write(str, 3);
ss.seekp(1);
ss.write(str, 3);
std::cout << ss.str(); //expecting 1123
它打印1123預期。奇怪的是,在上調用ss.seekp(0)
空流呈現不可用。請有人解釋我爲什麼如此(C++文檔中的一個源代碼)?
這聽起來像一個XY問題。你究竟在努力完成什麼? – NathanOliver
@NathanOliver我正在實施RAM磁盤,並且我決定最少的工作是使用'std :: stringstream'作爲'File'類的後端存儲...所以我想我正在嘗試*正是我所描述的。我需要將輸入以任意大小的char *緩存(以及包括覆蓋彼此的位置)的形式存儲到一個數據「存儲」中。 – wondra
適用於我:http://ideone.com/r6fbNe – PaulMcKenzie