C++ For循环问题

标签 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 循环,它将编译和构建。代码崩溃的任何想法?

最佳答案

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/

相关文章:

C++ 泛型迭代器

arrays - Rust中的意外行为 “for in n..m”

python - 在 For 循环中重试单次迭代 (Python)

c++ - 我应该从 main() 返回 EXIT_SUCCESS 还是 0?

c++ - 如何在 OpenCV 中将图像调整为特定大小?

C++ 数据结构类似于具有多个键级别的 std::map

arrays - 如何将数组与 `bash` 中的附加元素连接起来?

Python - 使用 For 循环更改图像的对比度

javascript - 如何使用for循环在看不见的数组中找到最大数?

c++ - 在 C++ 运行时将 1D 数组(指针)视为 3D 矩阵