C ++ For循环问题

时间:2011-09-25 15:14:57

标签: c++ for-loop

我有一个循环,它接受两个输入,一个姓氏和一个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循环,它将编译和构建。代码崩溃的任何想法?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

字符串ln的字符数可能少于6 - ln[k]将超出范围。

请注意,如果id字符串包含少于两个字符(i将为负数),代码将会崩溃。