In addition to "give them food" I've heard people proudly proclaim they give "care packages." Soap, socks, toothpaste, Etc.
This is just as bad. They may not need "socks." They may need medicine (including just motrin.) To use soap or toothpaste, you need access to a bathroom, which you can't get without cash.
Honestly <people in general>, if you want to give, then give. Stop giving with caveats and conditions. Maybe a small portion of them will use it on drugs. So what? That's a (minor) gamble. Honestly, if they're a drug addict (regardless of whether on the road to recovery or not) being able to stave off withdrawals and the DTs while homeless is just as life saving.
There's two mindsets we have to get rid of...
1. Before I give, you better really need it.
2. If I give it, you better use it the way I feel is right.
Give or don't give. But stop using giving as a moral thumbscrew, or as a way to continue to feel superior.