【问题标题】:How to open a filename that the user entered?如何打开用户输入的文件名?
【发布时间】:2014-04-11 17:55:24
【问题描述】:
    required.close();
    destined.close();
}

这个程序应该要求用户输入一个文件名和一个输出文件名。输入文件名应该有一个可以加密或解密的消息,这取决于用户的选择。该程序应该有 3 个功能,一个是检查文件的存在,一个是加密/解密每个字符,一个是加密/解密整个文件。

【问题讨论】:

  • 请提供一个最小示例。
  • 尝试使用绝对路径。这可能与您的程序具有与您期望的不同的工作目录有关。
  • 这是演示如何编写不可读的代码吗?请缩进#
  • 大家冷静,我是第一次使用这个网站!!友好很多?!
  • 我解决了这个问题,现在程序可以运行了,谢谢你们的帮助!

标签: c++ string coding-style iostream


【解决方案1】:

有一些错误和一些需要改变的地方:

  • encChar 函数中这是错误的:if (flag = true)。您应该使用比较运算符 (==):

    `if (flag == true)`
    

    有人更喜欢这种形式(比较词交换):

    `if (true == flag)`
    

    因为检测到错误的分配。

  • encFile 函数中应该是:

    ofstream destined(outFile.c_str());
    

    最好启用警告(例如,使用 GCC/CLANG 使用 -Wansi -Wall -Wextra)以便检测未使用的变量/参数(在您的情况下为 string outFile 输入参数)。

注意 Simple 的建议(尝试使用绝对路径。这可能与您的程序的工作目录与您期望的不同有关)并且您的程序应该可以工作。

您可以通过其他一些更改来改进您的代码:

  • 将变量放在尽可能窄的范围内,并在声明中初始化变量,例如

    ifstream required;
    required.open(inFile.c_str());
    

    应该是

    ifstream required(inFile.c_str());
    

    (并在使用流之前检查错误)。

  • using namespace stdis considered a bad practice.

  • 编码风格和格式非常随意,但如果你总是使用相同的风格,代码会更容易理解。

  • don't use global variables

【讨论】:

  • "流的目的地(outFile.c_str());"它会放在哪里?
猜你喜欢
  • 2016-08-29
  • 1970-01-01
  • 1970-01-01
  • 2019-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多