小编the*_*nel的帖子

为什么在迭代这个字符串时会出现分段错误?

我正在尝试用C++实现一个基本的移位密码.在找出导致分段错误的原因之前,我不能继续前进.我使用gdb逐步完成代码,问题似乎源于迭代器.

 1 #include <iostream>
 2 #include <string>
 3 
 4 std::string encrypt (std::string plain, int key);
 5 
 6 int main()
 7 {
 8         std::string plaintext;
 9         std::getline(std::cin,plaintext,'\n');
 10        encrypt(plaintext,3);   
 11 }
 12 
 13 std::string encrypt(std::string plain, int key)
 14 {
 15         std::string::iterator ic;
 16         for (ic= plain.begin(); ic != plain.end();++ic)
 17         {
 18                 std::cout <<*ic + key << std::endl;
 19         }
 20 }
Run Code Online (Sandbox Code Playgroud)

错误:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7b73ef1 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() () from /usr/lib/libstdc++.so.6
Run Code Online (Sandbox Code Playgroud)

c++ iterator

5
推荐指数
2
解决办法
2228
查看次数

标签 统计

c++ ×1

iterator ×1