【问题标题】:C++ putchar() function except the output goes to a designated output file?C++ putchar() 函数除了输出到指定的输出文件?
【发布时间】: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;

非常感谢您的帮助!

【问题讨论】:

标签: c++ function printing char integer


【解决方案1】:

使用fout &lt;&lt; converter; 代替fout &lt;&lt; putchar(converter);

这是因为 putchar 是 C 库 中定义的函数 - 打印到标准输出。而您使用的是面向对象的 C++ 库。尽管 C++ 大多向后兼容 C,但它们是两种不同的语言。C 语言处理文件的方式非常不同(主要使用 库中定义的 FILE 结构和指针),因为它缺乏 C++ 中存在的面向对象的特性。

如果你想使用类 C 的方式来完成任务,你将不得不重写整个源代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多