gpt4 book ai didi

c++ - 为什么在遍历此字符串时会出现段错误?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:33 25 4
gpt4 key购买 nike

我正在尝试用 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

最佳答案

您已将 encrypt 声明为返回一个 std::string,但您并未从该函数返回任何内容。您需要返回一个值,或者您需要将返回类型更改为 void 以指示该函数不返回任何内容。

至于为什么它如写的那样崩溃,我只能推测。编译器很可能在 main 中生成了对 std::string 析构函数的调用,以清理 std::string 对象加密 返回。因为 encrypt 实际上不返回任何东西,所以析构函数最终会为一个不存在的对象调用。应该包含对象的内存可能只包含垃圾数据,而析构函数不喜欢这样。

关于c++ - 为什么在遍历此字符串时会出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5024218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com