Search code examples
c++windowstype-conversiondesktop-application

Possible Lost of Data Converting from size_t to int


Windows programming. Following the tutorial at this MS page and get to this line at the bottom:

TextOutW(hdc, 5, 5, greeting, wcslen(greeting));

Variable greeting is a TCHAR array. VS2019 reports a warning (C4267) at the above line that there is a possible loss of data in the final parameter converting from the <size_t> returned by wcslen() and the int expected by TextOutW(). I know that the original example uses the _tcslen macro instead of wcslen() - it doesn't matter. I understand why that's happening but am completely mystified on how to modify the code to resolve the warning.

I can't find another TextOutx() that might take a <size_t>.

As an aside, while I was search for an answer, I read somewhere that strlen() is deprecated in 64-bit programming, although I can't recall where and I might have it wrong.

Is there a solution? Any advice?


Solution

  • An explicit cast to (int)wcslen(greeting); resolves the warnings but hides the potential loss of data.