2

我有这个功能。它的目标是取数组的最后一个字符,如果是字母则大写。如果它是返回键(ASCII 值 10 )或空行,也将其打印出来。所有其他字符,不要打印。注意我的 sentinel_value = 10。除了我的 else 语句外,它工作正常。它没有打印返回键。输出全部在一行上。有什么建议么?

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

ascii 10 只是一个换行符。EOL 字符因您使用的系统而异
windows = CR LF
linux = LF
osX = CR

代替 outfile<<asciiValue2;

尝试 outfile<<endl;

endl 扩展为您所在系统的 EOL 字符序列。

于 2012-04-04T16:58:04.600 回答
1

asciiValue2是一个int,所以它的 ASCII 值被插入到流中(两个字符,'1' 和 '0'),而不是它的字符表示。声明asciiValue2char,你应该没问题。

于 2012-04-04T17:04:46.123 回答