Maybe it's not too slick, but I came up with this:
myString = "a+b-c-d";
If[StringTake[myString, 1] != "-", myString = "+" <> myString,];
list = StringSplit[myString, {"+" -> "1", "-" -> "-1"}];
listout = Range[Length[list]/2];
For[i = 1, i <= Length[list]/2, i++,
listout[[i]] =...