2012-03-15 19 views
1

私はC++ newbです(私はあなたに伝えることができると確信しています)。私は、入力をファイル内の数字に変換するいくつかの暗号化プログラムを試してみると思いました。C++でchar文字を数値に変換しますか?

テーブルを作って、それぞれの文字に独自の番号を付けました。私は行くだろうか「『[2]のconstのchar』 'シャアから変換できません」

は誰でもお勧めできますそれが思いついた

if (Letter = "P") 
{ 
    FILEO.open("Encrypted.txt", ios::app); 
    FILEO << " 259"; 
    FILEO.close(); 
} 

:コード自体は、それぞれの文字のために、このように少し行きました実際に手紙から数字を取得することについて? よろしくお願いいたします。

+1

'Letter'のデータ型がどのようなものです:

次のような条件を書く必要がありますか?それは文字列か文字配列ですか? –

+1

私は 'Letter'が' char'だと思っています。二重引用符を使用すると文字列リテラルになります。文字Pを単に示すには、一重引用符 '' P ''を使用します。また、本当に 'Letter'(' = ')を設定しようとしていますか、その値(' == ')を確認していますか? – BoBTFish

+4

あなたの次の質問に答えるには「なぜ私のプログラムはとても遅いのですか?」:すべての文字の出力ファイルを開いたり閉じたりしないでください。 :) – Henrik

答えて

2

あなたの条件のチェックは間違っています。 ==で、=ではありません。単一の=は割り当てを意味し、==は条件付き検査を意味します。

私はLetterが文字配列であると仮定しています。その場合はstrcmpを使用してPと比較することができます。必要に応じて

if(strcmp(Letter, "P") == 0) 
{ 
    // rest of the code 
} 

は、strcmp関数参照hereを見てみましょう。

Letterは、単にcharであれば、あなたはこのようなPとそれを比較する必要がある -

if(Letter == 'P') 
{ 
    // rest of the code 
} 

文字の周りの単一引用符は、その後、使用して別の文字と比較することができリテラル文字、なります==

1
(Letter = "P") 

これは割り当てではなく、比較です。

あなたはおそらく(Letter == "P")を意味しましたが、これも間違っているでしょう、strcmpが必要です。

1

レターがcharである場合は、リテラル文字を使用、

+1

良い例があります。 – Karlson

2

.... =代入演算子あるとして....比較することのstrcmpを使用する必要があります。私が推薦する

if (Letter == 'P') 
... 
1

をエラーメッセージが表示されたときに、エラー番号)が表示されるように行番号を含めてメッセージを表示します(または、発生した行を教えてください)。これらの行番号に注意を払うことで、本当の問題を見つけるのに大きく役立ちます。

Letterがchar型であると仮定しています。リテラル文字列(二重引用符で囲んだもの)とリテラル文字(一重引用符で囲んだもの)の違いを理解する必要があります。

Luchianも言及していますが、Visual Basicとは異なり、等価性テストではなく、割り当てがあります。これは、Visual Basicとは異なり、2つのシンボルには異なる記号があります。

ようでなければなりません

if (Letter == 'P') 
2

あなたがC++の文字列にC++のcharを比較することはできません!二重引用符ではなく、一重引用符を使用してください。また、C++の等価演算子は=ではなく、==です。単一=は代入演算子です。

if (Letter == 'P') 
{ 
    FILEO.open("Encrypted.txt", ios::app); 
    FILEO << " 259"; 
    FILEO.close(); 
} 
関連する問題