我有一个循环接受两个输入,一个姓氏和一个 ID,然后将其转换为用户 ID。代码如下所示:
void User::setUserid(string ln, string id){
string temp = "0";
string temp2 = "0";
for (int k = 0; k < 6; k++){
temp += ln[k];
}
for (int i = id.length()-2; i<id.length(); i++){
temp2 += id[i];
}
userid = temp+temp2;
}
出于某种原因,如果我注释掉第一个 for 循环,它将编译和构建。代码崩溃的任何想法?
最佳答案
是ln
保证至少有六个字符?您可能会射过弦的末端。
无论如何,您选择了一种缓慢而复杂的方式来复制部分字符串。这应该足够了:
void User::setUserid(string ln, string id){
userid = "0" + ln.substr(0, 6) + "0" + id.substr(id.size() - 2);
}
请注意,如果 ln.size() < 6
,这将生成一个较短的用户 ID然后扔out_of_range
如果id.size() < 2
.
关于C++ For循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7546397/