问题描述
我编写了一个仅限命令行的十六进制到十进制二进制转换器,我从命令行调用它并使用 argv
作为参数,在那里我读取一个带有十六进制值的文本文件,然后写入另一个文本文件使用二进制的文本表示,使用 - 代表 0,# 代表 1。
所以如果给我 test.txt
包含
0123456789abcdef
0123456789abcdef
0123456789abcdef
-------#--#---##-#---#-#-##--####---#--##-#-#-####--##-####-####
-------#--#---##-#---#-#-##--####---#--##-#-#-####--##-####-####
-------#--#---##-#---#-#-##--####---#--##-#-#-####--##-####-####
这是我的代码:
#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.txt
或 hexArt test.txt -i outfile.txt
(取决于我是否想交换 # 和 - 值(我的意思是反转))
注意两行:
ifstream infile("test.txt");
ofstream outfile("outfile.txt");
这些限制了我可以使用的文本文件。我如何使用 argc
和 argv
这样当我从命令行调用此函数时,它不仅限于从 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 (将#修改为@)