error C2440: '=' : keine Konvertierung von 'const char [2]' to 'char'
Lerne ich c++, und ich habe Probleme dabei einige Neuling Sachen. Ich bin versuchen, um eine sehr kleine Anwendung, die Benutzer-Eingabe auf und speichert es in ein char-array. Ich habe dann analysiert durch das array und entfernen Sie alle Klammern und dases und anzeigen. wie die folgenden
(325)858-7455
zu
3258587455
Aber ich erhalte eine Fehler
error C2440: '=' : cannot convert from 'const char [2]' to 'char'
Unten ist meine einfachen code, können leicht geworfen werden in einem compiler und lief.
#include "stdafx.h"
#include<iostream>
#include<conio.h>
using namespace std;
/*
This is a template Project
*/
int main()
{
char phoneNum[25];
for(int i = 0; i < (sizeof(phoneNum) / sizeof(char)); i++)
{
phoneNum[i] = "i";
}
cout<< "Enter a phone Number" <<endl;
cin>>phoneNum;
if(phoneNum[0] != '(' || phoneNum[4] != ')' || phoneNum[8] != '-')
{
cout<<"error";
}
else
{
for(int i = 0; i < (sizeof(phoneNum) / sizeof(char));i++)
{
if(phoneNum[i] != '(' || phoneNum[i] != ')' || phoneNum[i] != '-')
{
cout<<phoneNum[i];
}
}
}
cin>>phoneNum;
getchar();
return 0;
}
Ist es nicht ganz fertig ist, also wenn jemand irgendwelche Hinweise auf die beste Weg, um entfernen Sie die Zeichenfolgen Zeichen aus einer Zeichenfolge. das wäre toll.
Wenn diese Hausaufgaben bitte markieren Sie, wie so.
Wollen Sie wirklich den Brief gelesen 'ich' in deinem array?
dases → Bindestriche?
Wenn Sie korrigieren Sie die syntax für ein einzelnes Zeichen vom "ich" zum "ich", es ist immer noch nicht klar ist mir, warum Sie benötigen, um die Schleife. Sie haben ein array mit den Buchstaben "i", 25-mal. Dies scheint sinnlos. Seien Sie sich bewusst, dass Sie nicht die richtige saite auch nicht, weil das array nicht terminiert mit '\0'.
Sollten Sie Ihren Algorithmus, um ziehen Sie einfach alle Zeichen, die numerische Ziffern. Dann ist es egal, wenn ich eingeben 123456789, (12)345-6789, 12-34-56-789...
Wollen Sie wirklich den Brief gelesen 'ich' in deinem array?
dases → Bindestriche?
Wenn Sie korrigieren Sie die syntax für ein einzelnes Zeichen vom "ich" zum "ich", es ist immer noch nicht klar ist mir, warum Sie benötigen, um die Schleife. Sie haben ein array mit den Buchstaben "i", 25-mal. Dies scheint sinnlos. Seien Sie sich bewusst, dass Sie nicht die richtige saite auch nicht, weil das array nicht terminiert mit '\0'.
Sollten Sie Ihren Algorithmus, um ziehen Sie einfach alle Zeichen, die numerische Ziffern. Dann ist es egal, wenn ich eingeben 123456789, (12)345-6789, 12-34-56-789...
InformationsquelleAutor numerical25 | 2010-05-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist hier, glaube ich:
Den Sie zuweisen möchten, in einem einzigen Charakter, so müssen Sie verwenden Sie einfache Anführungszeichen für Ihre literal:
Kann es auch andere Probleme - ich habe nur versucht, zu beheben, der einen im Titel genannten 🙂
InformationsquelleAutor Jon Skeet
Das wichtigste hier ist, zu verstehen, den Unterschied zwischen
"i"
und'i'
."i"
ist ein string, und strings im Speicher abgelegt, als eine Folge von char-Werten, Anhängen am Ende des Strings ein null-Zeichen (sagen wir mal null). Also, wenn Sie schreiben"hello"
Sie speichern'h' 'e' 'l' 'l' 'o' '(null)'
. In der gleichen Weise, wenn Sie schreiben"i"
, den Sie speichern'i' '(null)'
, und das ist der'const char [2]'
(ein array aus 2 char-Elementen).Wenn Sie ein "char-array" und verwenden Sie die [] - operator, verweisen Sie auf einem
'char'
element in diesem array. Also, wenn Sie schreibenphoneNum[i]
Sie werden immer ein'char'
.Das ist, warum Sie schreiben müssen
phoneNum[i] = 'i';
InformationsquelleAutor Diego Pereyra
Schlage ich vor, mit C++ - strings und-streams:
Den
std::string
hat viele nützliche Methoden zur Manipulation Methoden.Den Rat von vielen erfahrenen Entwicklern, die auf Stack Overflow ist für Anfänger, zu lernen mit C++ - strings (
std::string
) vor der Verwendung von C-style strings (char *
).im ratlos, was ein Pufferüberlauf ist. und dieser code nicht kompilieren. Nicht sicher, ob eine Menge von es ist Pseudo oder nicht. Würde ich nicht wissen Ursache ich bin noch nicht Fit in c++
Das ist nicht pseudo-code. Es sind nur ein paar Tippfehler im ersten Teil. Ersetzen Sie "using std::stream" mit "using std::string" und fügen Sie "using std::cin".
InformationsquelleAutor Thomas Matthews
Dem Ding auf der linken Seite ist ein
char
; das Ding auf der rechten Seite ist ein string, ein array vonchar
. Sie möchten'i'
auf der rechten Seite.ja
"i"
wird ein array aus zwei Zeichen, eines für diei
und eine für den null-terminator. Ebenso für""
wäre es ein array von nur einer, der null-terminator. In beiden Fällen wird der compiler meckert, weil die Arten sind nicht kompatibel - es ist nicht gültig, weisen die ein Arrays (auch mit nur einem Mitglied) eine nicht-array.Danke für die Aufklärung. Ich habe vergessen das kleine Wort array in meinem denken ... 😉
InformationsquelleAutor AakashM
Warum brauchen Sie diese überprüfen? Was, wenn Sie wollen, um ein nicht-US-Telefonnummer, formatiert wie Sie angeboten werden, [D. H. mit Klammern und Bindestriche, aber nicht beschränkt auf, (3)3-4]
Ich würde entfernen Sie den block.
Ich weiß, allein die Tatsache, dass ich kann nicht platzieren Sie code in einem Kommentar.
InformationsquelleAutor jcolebrand