core: add a str iterator