String partition functions and infinite products