此問題與:Get number of characters read by sscanf? 然而,它特別要求如何包裝可變參數(C++ 11 variadic模板)以實現該效果。獲取通過包裝函數使用std :: sscanf函數掃描的字符數。擴展可變參數模板
我想有一個函數:
int my_sscanf(int& ncharswritten, const char* str, const char* fmt, ...)
{
}
返回的指定格式事物的正常數量,但還(如例如參考參數)返回寫入的字符數。
正如在上面的鏈接中提到的,建議的解決方法是知道寫入的字符數是使用fmt末尾的%n。問題是如何在現實生活中實現這一點,而不必每次都手動添加。
您需要%N'加上'以某種方式格式字符串。最簡單的'std :: string fmt2 = fmt +「%n」; ... sscanf(... fmt2.c_str()...);' –
Thanks Mats,魔鬼詳細介紹瞭如何在可變參數列表末尾添加所需的額外int *參數到sscanf( ),將%n添加到fmt的結尾後。 – rveale