我有一個字符串,看起來像L"\"4\""
並希望將其解析爲一個整數值。C++ sscanf顯示意外的行爲
std::wstring wsFoo(L"\"4\"");
int iSize = 1; // Number of characters the number will have
int iResult = -1;
swscanf_s(wsFoo.c_str(), L"\"%*d\"", iSize, &iResult);
wprintf_s(L"%d", iResult);
根據http://www.cplusplus.com/reference/clibrary/cstdio/printf/在%*d
星號應該意味着:寬度沒有在格式字符串指定的,但作爲一個附加的整數值的論點,即必須被格式化參數之前。
然而,iResult
的值將在此代碼段後顯示爲-1。爲什麼?
我不知道是否有幫助,但我使用MSVC++ 2010
爲什麼你在看的'在printf()的文檔'當你調用['swscanf_s()'](http://msdn.microsoft.com/en-us/library/t6z7bya3 (v = VS.80)的.aspx)? –