Hey Ich bin ziemlich neu in der Programmierung und ich habe Probleme mit der Isalpha-Funktion in meinem Programm. Dies ist ein Teil des Codes für eine Palindrom-Klasse. Ich versuche, alle nicht alphabetischen Zeichen aus der Eingabe zu entfernen. Wenn also der Benutzer "Hi, How are you" eingibt, muss ich zuerst die Größe des Arrays nur der Buchstaben zählen, dann muss ich in meiner removeNonLetters-Unterklasse die nicht alphabetischen Zeichen loswerden. Kann mir bitte jemand dabei helfen? Ich danke dir sehr!Verwendung der Isalpha-Funktion mit String-Pointern
#include <iostream>
#include <string>
#include <stdio.h>
#include <algorithm>
#include <cctype>
#include <cstring>
#include <ctype.h>
using namespace std;
class palindrome
{
private:
int only_letters_size;
string input_phrase;
string* only_letters;
public:
string inputPhrase();
string removeNonLetters();
string* new_Array;
int size_new_Array;
};
string palindrome::inputPhrase()
{
cout << "Input phrase: "; //asks the user for the input
getline(cin,input_phrase);
size_new_Array = input_phrase.length(); //creating a dynamic array to store
the input phrase
new_Array = new string[size_new_Array];
int i;
for (i=0; i<size_new_Array; i++)
{
new_Array[i]=input_phrase[i];
}
only_letters_size = 0;
while(new_Array[i])
{
if (isalpha(new_Array[i])) //PROBLEM OCCURS HERE
{
only_letters_size=only_letters_size+1;
}
}
cout << only_letters_size << endl;
return new_Array;
}
string palindrome::removeNonLetters()
{
int j=0;
int str_length = new_Array.length(); //string length
only_letters = new string[only_letters_size];
for (int i=0;i<size_new_Array;i++) //PROBLEM OCCURS HERE AS WELL
{
if (isalpha(new_Array[i]))//a command that checks for characters
{
only_letters[j] = new_Array[i];//word without non alphabetical c
characters is stored to new variable
j++;
}
}
cout << only_letters << endl;
return only_letters;
}
Also, was ist das Problem? Wo ist das Problem? Warum denkst du, wir müssen den ganzen Code lesen? Könnten Sie bitte Ihr Programm debuggen? Könnten Sie bitte alles unnötigen Code entfernen und ein [MCVE] veröffentlichen? –
Ich glaube, was Sie zuordnen wollten ist 'char [size_new_Array]', und sicher nicht 'string [size_new_Array]'? std :: string ist eine Sammlung von mehreren Zeichen, und Sie verwenden ein Array von Strings, als ob 1 String 1 Zeichen entspricht. Ist eine dynamische Zuordnung ** erforderlich **? Denn hier wäre eine einfache Zeichenfolge ausreichend. –
Wahrscheinlich müssen Sie einfach ein besseres Verständnis dafür erreichen, was ['std :: string'] (http://en.cppreference.com/w/cpp/string/basic_string) eigentlich ist. –