gpt4 book ai didi

c++ - 将 char 类型转换为字符串时,代码始终返回 255 或 -1073741819

转载 作者:行者123 更新时间:2023-11-30 04:58:07 25 4
gpt4 key购买 nike

这是一段将字符串转换为小写字母的代码。我使用了字母表中大写字母和小写字母之间的 ASCII 值差异为 32 的想法。我正在使用代码块。该代码进行了转换但给出了这个错误。为什么在这种情况下会出现错误,尽管将字符串转换为 char 没有错误?我该如何纠正这个问题?

#include<iostream>

using namespace std;

string convertlow (string input )
{
char letters[255];
int ascii[255];

for (int i=0;i<255;i++)
{
letters[i]=input[i];
ascii[i]=(int)letters[i];

if (ascii[i] < 91)
{
ascii[i] = ascii[i] + 32;
letters[i] = (char) ascii[i];
input[i] = letters[i];
}
}

return input;
}

int main()
{
string in;
cin >> in;

cout << "The lowercase version is: \n" << convertlow(in);
return 0;
};

最佳答案

你应该改变:

if (ascii[i]<91)
{
ascii[i]=ascii[i]+32;
letters[i]= (char)ascii[i];
input[i]=letters[i];
}

到:

if(ascii[i] >= 'A' && asc[i] <= 'Z')
{
ascii[i] = ascii[i]+('a' - 'A');
letters[i] = (char)ascii[i];
input[i] = letters[i];
}

但您的问题是数组超出范围(字符串大小应小于 255)。要解决此问题,您可以将方法更改为:

string convertlow (string input ){
for(int i = 0 ; i < input.size() ; ++i){
if(islower(input[i]) ){
input[i] = tolower(input[i]);
}
}
return input;
}

您需要包含 header :stringalgorithm

关于c++ - 将 char 类型转换为字符串时,代码始终返回 255 或 -1073741819,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51799356/

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