gpt4 book ai didi

c++ - 检查字符串的两端均不起作用

转载 作者:行者123 更新时间:2023-12-02 10:27:45 25 4
gpt4 key购买 nike

我正在尝试字符串的开头和结尾。如果单词有大写字母,我们将其更改为小写。如果单词有空格或'"',我们将删除该字符。它应该检查的第一个递归调用会看到字符串的末尾有一个大写字母,并且应该将其更改为小写。但是,当我输出word[word.size()]时,它会输出一个空格,但是当我输出word[word.size() - 1]时,它将输出我要查找的字母。我不确定空格是什么以及应该如何处理它,因为我不想在字符串中使用它,因为这会导致比较问题。

bool checkPalindrome(string word){
if (isupper(word[0]))
{
word[0] = tolower(word[0]);
}

if (isupper(word[word.size()]))
{
word[word.size()] = tolower(word[word.size()]);
}

//check if there is a space or "" if there is then delete that position from the string
if (word[0] == ' ' || word[0] == '"')
{
word.erase(1);
}

if (word[word.size()] == ' ' || word[word.size()] == '"')
{
word.pop_back();
}

if (word.size() > 1)
{
if (word[0] == word[word.size()])
{
word = word.substr(1, word.size() - 2);
return checkPalindrome(word, count);
}
else
{
return false;
}
}
else
{
return false;
}
int main()
{

ifstream inFile;
bool check = false;
string temp = "";
int count = 0;
vector<string> vect;

//Reading from a file line by line
inFile.open("words.txt");
if (inFile.is_open())
{
while (getline(inFile, temp))
{
vect.push_back(temp);
}
}
inFile.close();

for (auto i = 0; i < vect.size(); i++)
{
count = vect[i].size();
check = checkPalindrome(vect[1], count);

if (check == true)
{
cout << vect[i] << ", is a palindrome!\n";
}
else
{
cout << vect[i] << ", is not a palindrome.\n";
}
}
} return 0;

最佳答案

如果字符串的大小为4,则只有4个元素:0、1、2和3。没有第五个元素,因此您不能访问第四个元素。
如果字符串的长度为五:
零是第一个元素。
一个是第二个要素。
第二是第三个要素。
三是第四要素。
当然,第五个元素是Leeloo,它不是字符串中的字符。如果字符串的长度为四,则不应尝试访问第五个元素(至少在未经她允许的情况下)。
Ecto gamat。

关于c++ - 检查字符串的两端均不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63570707/

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