我正在C++教材中做一个练习,要求我创建一个程序;加密";并将加密的文本打印到输出文件。";加密";是相当简单的,只需要将每个字母表字符在字母表中的列表中向下移动两个位置。因此,a将被加密为c,e将被加密成g,等等。
我的方法是分配一个声明的整数对象";转换器";至值"0";输入+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;
非常感谢您的帮助!
使用fout << converter;
而不是fout << putchar(converter);
。
这是因为putchar是C库<stdio.h>。而您使用的是面向对象的C++库。这是两种不同的语言,尽管C++大多与C向后兼容。C语言处理文件的方式非常不同(主要使用在<stdio.h>库中定义的FILE结构和指针(,因为它缺乏C++中存在的面向对象的功能。
如果您想使用类似C的方式来完成任务,您必须重写整个源代码。