2017-11-18 83 views
0

所以我的程序是一個迴文檢查函數,它只使用字符串庫和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

這是一個家庭作業問題,還是一個愚蠢的在線測驗網站的問題,沒有人真正在意? –

回答

0

如何像這樣

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

的std :: tolower將是不確定的,如果字符值不能表示爲無符號字符,所以要轉換。

相關問題