I have a loop that takes two inputs, a last name and an ID, then converts it to a user id. The code looks like this:
void User::setUserid(string ln, string id){
string temp = "0";
string temp2 = "0";
for (int k = 0; k < 6; k++){
开发者_如何学Python temp += ln[k];
}
for (int i = id.length()-2; i<id.length(); i++){
temp2 += id[i];
}
userid = temp+temp2;
}
For some reason if I comment out the first for loop it will compile and build. Any ideas why the code crashes?
Is ln
guaranteed to have at least six characters? You may be shooting past the end of the string.
In any event, you've chosen a slow and complicated way to copy parts of strings around. This should suffice:
void User::setUserid(string ln, string id){
userid = "0" + ln.substr(0, 6) + "0" + id.substr(id.size() - 2);
}
Note that this will produce a shorter userid if ln.size() < 6
and throw out_of_range
if id.size() < 2
.
The string ln
might have less characters than 6 - ln[k]
will be out of bounds.
Note that the code will crash if the id
string contains less then two characters (i
will be negative).
精彩评论