If the delay was caused by the airline (maintenance, etc.), the airline should pay for room.
If not, they should be able to provide a 'distressed traveler coupon' for a discounted hotel room.
Personally, I would stay at a cheap hotel. STL has a Super 8 and a Ramada for $50 tonight.