我想在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
但他为什么在`〜basic_string`中得到SIG? – osgx 2011-02-17 01:44:11
啊谢谢修复它 – 2011-02-17 01:44:26
我甚至不知道这可以编译。顺便说一下@kernel,别忘了接受正确的答案! – Marlon 2011-02-17 01:46:57