【发布时间】:2022-01-27 22:17:03
【问题描述】:
我正在我的 C++ 教科书中做一个练习,要求我创建一个程序来“加密”给定的输入文本文件并将加密的文本打印到输出文件。 “加密”相当简单,只是将每个字母字符移到字母表列表的下方两个位置。因此,a 将被加密为 c,e 将被加密为 g,等等。
我的方法是将声明的整数对象“转换器”分配给值“输入+2”,其中“输入”是从文件中读取的字符。我使用 switch 语句来确保句点、逗号等语法字符被复制而不进行转换。
我正忙着弄清楚如何才能将“转换器”打印为字符而不是整数。并不是我不知道如何使用 putchar() 函数——而是我无法让这个函数将输出写入我的输出文本文件,而不是将其流式传输到标准输出!
有人知道如何操作此函数以打印到输出文件而不是标准输出吗?是否还有其他我不知道应该使用的功能?这是我的代码:
/******************************************************************************
Problem 5-18
*******************************************************************************/
#include <iostream>
#include <string>
#include <fstream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
//Declare and Initialize Objects
char input, output;
int converter;
string filename;
ifstream fin;
ofstream fout;
//Collect Name of Input File
cout << "Enter filename: \n" << endl;
cin >> filename;
//Open Input File and Check for Errors
fin.open(filename);
if(fin.fail())
{
cerr << "Error opening file " << filename << endl;
exit(1);
}
//Open Output filename
fout.open("Report.txt");
//Read Input File and Transcribe to Code
while(!fin.eof())
{
fin >> input;
switch(input)
{
case ' ':
fout << input;
break;
case '.':
fout << input;
break;
case ',':
fout << input;
break;
default:
converter = (input + 2);
fout << putchar(converter);
break;
}
}
return 0;
非常感谢您的帮助!
【问题讨论】:
-
while(!fin.eof())does not do what you think it does.
标签: c++ function printing char integer