2

私はこの機能を持っています。そして、その目標は、配列の最初の最後の文字を取得し、文字の場合は大文字にすることです。リターン キー (ASCII 値 10 ) または空白行の場合は、それも出力します。他のすべての文字は、印刷しないでください。私のsentinel_value = 10に注意してください。私のelseステートメントを除いて、うまく機能しています。リターンキーを出力していません。出力はすべて 1 行です。助言がありますか?

void EncryptMessage (ofstream& outFile, char charArray[], int length)
{
    int index;
    int asciiValue;
    int asciiValue2;
    char upperCased;
    char finalChar;


    for (index = length-1; index >= 0 ; --index)
    {
        upperCased = static_cast<char>(toupper(charArray[index]));
        if (upperCased >= 'A' && upperCased <= 'Z')
        {
            asciiValue = static_cast<int>(upperCased) - 10;
            finalChar = static_cast<char>(asciiValue);  
            outFile << finalChar;
        }
        else
        {
            asciiValue2 = static_cast<int>(charArray[index]);
            if (asciiValue2 == SENTINEL_VALUE)
            {
                outFile << asciiValue2;
            }   
        }
    }
}
4

2 に答える 2

1

asciiValue2はであるintため、ASCII値がストリームに挿入されます(2文字、「1」と「0」)。文字表現ではありません。asciiValue2と宣言charすれば大丈夫です。

于 2012-04-04T17:04:46.123 に答える
1

ascii 10 は単なる改行です。EOL 文字は、使用しているシステムによって異なります。
windows = CR LF
linux = LF
osX = CR

それ以外の outfile<<asciiValue2;

試す outfile<<endl;

endl は、使用しているシステムの EOL 文字シーケンスに展開されます。

于 2012-04-04T16:58:04.600 に答える