尝试从数组复制时出现分段错误(核心转储)错误
segmentation fault (core dumped) error when trying to copy from an array
试图将内容从 b 复制到 a 但我得到了那个错误
有人告诉我这意味着我正在尝试访问我不允许访问的内存,但我不知道我应该怎么做才能让它编译。
replace(txt , code);
string replace(string a , string b)
{
string alpha[26] = {"abcdefghijklmnopqurstuvwxyz"};
for (int i = 0; i < strlen(a); i++)
{
for(int n = 0; n < 26; n++)
{
if(a[i] == alpha[n])
{
a[i] = b[n];
i++;
}
}
}
return word;
}
我是初学者,所以没有关于干净编码或语法糖之类的评论,请帮我解决这个问题
看来您在理解方面有些问题 pointers, so I recommend you to read about them. Also consider reading about datatypes and types from STL you are using。 (因为 std::string 已经是一个值数组,所以当您创建 std::string[26] 时,您实际上是在创建指向指针的指针)
我猜你正在尝试做类似的事情:
std::string replace(string a , string b)
{
std::string alpha = {"abcdefghijklmnopqurstuvwxyz"};
for (size_t i = 0; i < a.size(); ++i)
{
for(size_t n = 0; n < alpha.size(); ++n)
{
if(a[i] == alpha[n])
{
a[i] = b[n];
i++; // Also, I think you doesnt need this line, cause you already incrementing i in for loop
}
}
}
return a;
}
你还在你的字符串上使用了 strlen()
,这也是不正确的,因为它用于 char 值。如果您想获取字符串的长度,最好使用 string.lenght()
此外,在这种情况下最好使用 size_t
或 unsigned int
而不是 int
,因为您不需要负数来解析这些字符串。 ()
试图将内容从 b 复制到 a 但我得到了那个错误 有人告诉我这意味着我正在尝试访问我不允许访问的内存,但我不知道我应该怎么做才能让它编译。
replace(txt , code);
string replace(string a , string b)
{
string alpha[26] = {"abcdefghijklmnopqurstuvwxyz"};
for (int i = 0; i < strlen(a); i++)
{
for(int n = 0; n < 26; n++)
{
if(a[i] == alpha[n])
{
a[i] = b[n];
i++;
}
}
}
return word;
}
我是初学者,所以没有关于干净编码或语法糖之类的评论,请帮我解决这个问题
看来您在理解方面有些问题 pointers, so I recommend you to read about them. Also consider reading about datatypes and types from STL you are using。 (因为 std::string 已经是一个值数组,所以当您创建 std::string[26] 时,您实际上是在创建指向指针的指针)
我猜你正在尝试做类似的事情:
std::string replace(string a , string b)
{
std::string alpha = {"abcdefghijklmnopqurstuvwxyz"};
for (size_t i = 0; i < a.size(); ++i)
{
for(size_t n = 0; n < alpha.size(); ++n)
{
if(a[i] == alpha[n])
{
a[i] = b[n];
i++; // Also, I think you doesnt need this line, cause you already incrementing i in for loop
}
}
}
return a;
}
你还在你的字符串上使用了 strlen()
,这也是不正确的,因为它用于 char 值。如果您想获取字符串的长度,最好使用 string.lenght()
此外,在这种情况下最好使用 size_t
或 unsigned int
而不是 int
,因为您不需要负数来解析这些字符串。 ()