试图暂时将整个字符串转换为小写字母并删除空格

问题描述:

所以我的程序是一个回文检查函数,它只使用字符串库和C++ sting对象。为了检查用户输入的字符串是否是回文,我需要将整个字符串转换为小写字母,并删除空格以检查字符串与其反向是否相等。我试过寻找解决方案,但我只找到使用不同库和创建新功能的答案。这是迄今为止的代码。试图暂时将整个字符串转换为小写字母并删除空格

#include <iostream> 
#include <string> 

using namespace std; 

string checkPalin(); 

int main() 
{ 
    string result = checkPalin(); 

    cout << "The palindromes are: " << result; 
} 

string checkPalin() 
{ 
    int stringNum, time = 0; 
    string list; 
    string str1; 
    string reverse; 
    cout << "How many strings? " << endl; 
    cin >> stringNum; 
    cout << "Enter the strings: " << endl; 

    do 
    { 
     getline(cin, str1); 


     int size = str1.length(); 
     for (int i = size - 1; i >= 0; i--) 
      reverse += str1[i]; 

     if ((str1.compare(reverse)) == 0) 
     { 
      list += str1; 
     } 

     time++; 
    } while (time <= stringNum); 

    return list; 
} 
+0

检查[This](https://stackoverflow.com/questions/20326356/how-to-remove-all-the-occurrences-of-a-char-in-c-string)。有'std :: reverse',所以你不必写它。我认为你可以使用所有你想要的'std' – lakeweb

+2

你是什么意思的“我只找到答案...创造新的功能”?你是不是想写功能? – PhotometricStereo

+0

这是一个家庭作业问题,还是一个愚蠢的在线测验网站的问题,没有人真正在意? –

如何像这样

std::string inputString = "WhatEver", cleanString; 
for (char & c : inputString) 
    if (c != ' ') 
     cleanString += std::tolower(static_cast<unsigned char>(c)); 

的std :: tolower将是不确定的,如果字符值不能表示为无符号字符,所以要转换。