Почему я получаю ошибку сегментации при итерации по этой строке?

Я пытаюсь реализовать базовый шифр сдвига на 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 }

Ошибка:

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
5
задан the_kernel 17 February 2011 в 01:37
поделиться