C++ 检查字符串的两端不起作用
我试着从一根弦的开始到结束。如果单词有大写字母,我们将其改为小写。如果单词有空格或C++ 检查字符串的两端不起作用,c++,c++11,C++,C++11,我试着从一根弦的开始到结束。如果单词有大写字母,我们将其改为小写。如果单词有空格或“”我们将删除该字符。第一次递归调用它应该检查字符串的结尾是否有大写字母,并将其更改为小写。但是,当我输出单词[word.size()]时,它输出一个空格,但我输出单词[word.size()-1]< /代码>它将输出我正在寻找的字母。我不知道空白空间是什么,我应该如何处理它,因为我不希望它存在于我的字符串中,因为它造成了比较问题。 bool checkPalindrome(string word){ if (is
“”
我们将删除该字符。第一次递归调用它应该检查字符串的结尾是否有大写字母,并将其更改为小写。但是,当我输出单词[word.size()]
时,它输出一个空格,但我输出单词[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;
bool检查回文(字符串字){
if(isupper(字[0]))
{
字[0]=tolower(字[0]);
}
if(isupper(word[word.size()]))
{
单词[word.size()]=tolower(单词[word.size()]);
}
//检查是否有空格或“”如果有,则从字符串中删除该位置
如果(单词[0]=''| |单词[0]=''”)
{
单词删除(1);
}
如果(单词[word.size()
{
单词pop_back();
}
if(word.size()>1)
{
如果(字[0]==字[word.size()])
{
word=word.substr(1,word.size()-2);
返回checkPalindrome(单词、计数);
}
其他的
{
返回false;
}
}
其他的
{
返回false;
}
int main()
{
河流充填;
布尔检查=假;
字符串temp=“”;
整数计数=0;
向量向量;
//逐行读取文件
infle.open(“words.txt”);
if(infle.is_open())
{
while(getline(填充,临时))
{
矢量推回(温度);
}
}
infle.close();
对于(自动i=0;i cout如果字符串的大小为4,则只有4个元素:0、1、2和3。没有第五个元素,因此无法访问第四个元素
如果字符串的长度为五:
零是第一个元素。
一个是第二个元素。
二是第三个元素。
三是第四要素
第五个元素当然是Leeloo,它不是字符串中的一个字符。如果字符串的长度为4,则不应尝试访问第五个元素(至少,在没有她的许可的情况下)
Ecto gamat。如果字符串的大小为4,则只有4个元素:0、1、2和3。没有第五个元素,因此无法访问第四个元素
如果字符串的长度为五:
零是第一个元素。
一个是第二个元素。
二是第三个元素。
三是第四要素
第五个元素当然是Leeloo,它不是字符串中的一个字符。如果字符串的长度为4,则不应尝试访问第五个元素(至少,在没有她的许可的情况下)
Ecto gamat.请提供一个。在这种情况下,您可以硬编码words.txt
word[word.size()]
的内容是最后一个字母后的内容。有效索引为[0到size-1]
。从C++11开始,获取字符串
开头和结尾字符的最简单方法是使用front
和back
方法。不过,先进行测试以确保字符串不是空的。这是否回答了您的问题?@johnnymopword[word.size()]
在C++11及更高版本中有效,它返回对字符串的空终止符的引用。请提供一个。在这种情况下,您可以硬编码words.txt的内容word[word.size()]
是最后一个字母。有效索引为[0到size-1]
。从C++11开始,获取字符串
开头和结尾字符的最简单方法是使用front
和back
方法。不过,先进行测试以确保字符串不是空的。这是否回答了您的问题?@johnnymopword[word.size()]
在C++11及更高版本中有效,它返回对字符串空终止符的引用。“没有第五个元素,因此您无法访问第四个元素。”-实际上,在C++11及更高版本中,有第五个元素,空终止符,您可以使用运算符[]合法访问它。
”没有第五个元素,因此您无法访问第四个元素。”-实际上,在C++11及更高版本中,有第五个元素,空终止符,您可以使用操作符[]
合法地访问它。