我有这个功能。它的目标是将最后一个字符作为数组的第一个字符,如果它是一个字母则将字符大写。如果是返回键(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;
}
}
}
}
答案 0 :(得分:1)
ascii 10只是一个换行符。 EOL字符因您所使用的系统而异
windows = CR LF
linux = LF
osX = CR
outfile<<asciiValue2;
试
outfile<<endl;
endl扩展为您所在系统的EOL字符序列。
答案 1 :(得分:1)
asciiValue2
是int
,因此它的ASCII值插入流中(两个字符,'1'和'0'),而不是它的字符表示。将asciiValue2
声明为char
,您应该没问题。