我有一個測試,我從std::istringstream
得到字符。我想獲得測試期間未讀取的std::istringstream
部分。 std::istringstream::str()
函數返回整個字符串,而不僅僅是未讀的部分。得到istringstream的未讀部分
如何獲取字符串的這一部分?
我有一個測試,我從std::istringstream
得到字符。我想獲得測試期間未讀取的std::istringstream
部分。 std::istringstream::str()
函數返回整個字符串,而不僅僅是未讀的部分。得到istringstream的未讀部分
如何獲取字符串的這一部分?
假設你沒有手動此行之前設定的輸入位置指示:
std::string unread = stream.eof() ? "" : stream.str().substr(stream.tellg());
這是否適用於所有std :: istringstream實現? – Graznarak
@Graznarak是的,這裏沒有具體的實現。 – 0x499602D2
@DyP我不太明白。我沒有使用'rdbuf() - > str()',我知道它會返回整個字符串。 – 0x499602D2
要做到這一點,我認爲最簡單的方法是將istringstream
的讀取緩衝區推到一個字符串流:
void test(std::istringstream& iss)
{
/* Test code */
}
int main()
{
std::istringstream iss;
std::stringstream not_readed_buffer;
std::string not_readed;
test(iss);
if(iss)
{
not_readed_buffer << iss.rdbuf();
not_readed = not_readed_buffer.str();
}
}
'的std ::函數getline(mystringstream,rest_of_string)' –
@MooingDuck這是不是隻是一直讀到的..結束線? (直到'istringstream'的'eof'。) – dyp
oops。 'std :: getline(mystringstream,rest_of_string,0);'會一直讀取,直到找到一個更接近的NULL或EOF。 –