使用 argc 和 argv 参数写入和读取特定文件

问题描述

我编写了一个仅限命令行的十六进制到十进制二进制转换器,我从命令行调用它并使用 argv 作为参数,在那里我读取一个带有十六进制值的文本文件,然后写入另一个文本文件使用二进制的文本表示,使用 - 代表 0,# 代表 1。

所以如果给我 test.txt 包含

0123456789abcdef 
0123456789abcdef 
0123456789abcdef

我将写入一个文件outfile.txt 包含

-------#--#---##-#---#-#-##--####---#--##-#-#-####--##-####-####
-------#--#---##-#---#-#-##--####---#--##-#-#-####--##-####-####
-------#--#---##-#---#-#-##--####---#--##-#-#-####--##-####-####

这是我的代码

#include <iostream>
#include <fstream>
using namespace std;

const char *hexToArt(char c)
{
    ...
}

const char *inverseHexToArt(char c)
{
    ...
}

int main(int argc,char **argv)
{
    ifstream infile("test.txt");
    ofstream outfile("outfile.txt");

    char chars[10001]; //c-style string
    chars[10000] = '\0';

    if (argv[2][1] == 'a')
    {
        int i = 0;
        char something;
        while (!infile.eof())
        {
            something = infile.get();
            outfile << hexToArt(something);
        }
        infile.close();
    }
    else if (argv[2][1] == 'i')
    {
        int j = 0;
        char something2;
        while (!infile.eof())
        {
            something2 = infile.get();
            outfile << inverseHexToArt(something2);
            
        }
    }
    infile.close(); 

    return 0;
}

当我从命令行调用它时,我输入

hexArt test.txt -a outfile.txthexArt test.txt -i outfile.txt(取决于我是否想交换 # 和 - 值(我的意思是反转))

注意两行:

ifstream infile("test.txt");
ofstream outfile("outfile.txt");

这些限制了我可以使用的文本文件。我如何使用 argcargv 这样当我从命令行调用函数时,它不仅限于从 test.txt 读取并写入 outfile.txt ?

喜欢这个<exe name> <file to read from> <-a/-i> <file to write to>,而不是我现在拥有的,<exe name> test.txt <-a/-i> outfile.txt

我认为它涉及到类似的东西

ifstream infile(argv[SOME_NUMBER]);
ofstream outfile(argv[SOME_NUMBER]); 

但我不确定如何实现它或它为什么起作用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)