你好,所有刚刚起步的程序员,
我正在尝试创建一个识别回文结构的程序。首先,我输入一个字符串然后反转。然后我将原始字符串与它的反向进行比较,以确定它是否是回文。我的问题是该程序不会忽略案例(Neven不会被视为回文)。我有两行代码用于使整个字符串小写,但我不确定如何在if语句中调用这些行。如果字符串是回文
,我使用if语句打印语句for (std::string::size_type i=0; i<abc.length(); ++i)
std::tolower(abc[i],lower);
这是整个代码
#include <iostream>
#include <string>
#include <locale>
int main() {
std::locale lower;
std::string abc;
std::cout << "Enter Text " ;
getline(std::cin, abc);
std::cout<<"Your string is "<<abc<<std::endl;
abc=std::string(abc.rbegin(),abc.rend()); // reverse string
std::cout<<"Your reverse string is " <<abc<<std::endl;
for (std::string::size_type i=0; i<abc.length(); ++i)
std::tolower(abc[i],lower);
if(abc==std::string(abc.rbegin(),abc.rend())) {
std::cout << abc << " is a palindrome"<<std::endl;
}
else
{
std::cout<<abc<<" is not a palindrome"<<std::endl;
}
return 0;
}
我试图包含&#34; std :: tolower(abc [i],lower);&#34;在if语句中但我收到了一个错误。我也尝试将它定义为一个变量,通过if语句传递它,但也失败了。我不确定如何进步。 任何帮助表示赞赏
答案 0 :(得分:2)
std :: tolower()不是inplace函数,它返回返回值中的小写ch。
试试这个
abc[i] = std::tolower(abc[i],lower);
输出:此更改后
Enter Text Sas
Your string is Sas
Your reverse string is saS
sas is a palindrome
答案 1 :(得分:1)
std :: tolower不会修改传入的值,而是返回小写字母。所以你的行:
public static void waitForActivity(long time) {
try {
Thread.sleep(time);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
必须更改为:
std::tolower(abc[i],lower);
<强> Live On Coliru 强>