【问题描述】 从in.txt文件中读取一行电报文字,可以任选两种输出:原文输出或密码输出至out。。密码输出要求将相应的字母变成其下一个字母,如'a'变成'b',……,'Z'变成'A',其他字符不变。用#define命令控制是否需要译成密码。#define KEY 1,输出密码,#define KEY 0,则不译成密码,原文输出。 【输入形式】 源文件名和目标文件名分别为in.txt和out.txt,程序将从当前目录下读取in.txt文件。 【输出形式】 将in.txt文件中内容按要求输出到otu.txt文件中。 【样例输入】 Alcatel provides 18 end-to-end solutions. 【样例输出】 Bmdbufm qspwjeft 18 foe-up-foe tpmvujpot. 【样例说明】 根据 KEY的#define KEY 1,输出密码,#define KEY 0,则不译成密码,原文输出。
时间: 2024-03-12 11:44:16 浏览: 96
以下是实现该功能的 C++ 代码,包括从文件中读取和输出到文件:
```cpp
#include <iostream>
#include <fstream>
#include <cstring>
#define KEY 1 // 定义是否加密
using namespace std;
int main() {
ifstream fin("in.txt");
ofstream fout("out.txt");
string str;
getline(fin, str); // 读取一行文本
if (KEY) { // 加密
for (int i = 0; i < str.length(); i++) {
if (isalpha(str[i])) { // 判断是否为字母
if (str[i] == 'Z' || str[i] == 'z') { // 处理边界情况
str[i] = str[i] - 25;
} else {
str[i] = str[i] + 1;
}
}
}
}
fout << str << endl; // 输出到文件
fin.close();
fout.close();
return 0;
}
```
代码中用 `ifstream` 和 `ofstream` 分别读取和输出文件,用 `getline` 函数读取一行文本,用 `isalpha` 函数判断是否为字母,用 `if` 语句处理边界情况。在输出时,用 `fout` 输出到 `out.txt` 文件中。
阅读全文