Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将同一个文件作为参数给出不同的c++;_C++_File_Ifstream_Argv_Nand2tetris - Fatal编程技术网

C++ 将同一个文件作为参数给出不同的c++;

C++ 将同一个文件作为参数给出不同的c++;,c++,file,ifstream,argv,nand2tetris,C++,File,Ifstream,Argv,Nand2tetris,我正在做NAND2TTERIS课程的项目6,即创建一个汇编程序。在我的名为myassembler.cpp的汇编器中,如果我以两种不同的方式给出一个名为MaxL.asm的文件,那么输出将非常不同。 在此,如果我执行以下操作: ebin@tux:~/ass3/assignment3$ ./myassembler MaxL.asm >test.txt ebin@tux:~/ass3/assignment3$ cat test.txt 0000000000000000 1111110000010

我正在做NAND2TTERIS课程的项目6,即创建一个汇编程序。在我的名为myassembler.cpp的汇编器中,如果我以两种不同的方式给出一个名为MaxL.asm的文件,那么输出将非常不同。 在此,如果我执行以下操作:

ebin@tux:~/ass3/assignment3$ ./myassembler  MaxL.asm >test.txt
ebin@tux:~/ass3/assignment3$ cat test.txt
0000000000000000
1111110000010000
0000000000000001
1111010011010000
0000000000001010
1110001100000001
0000000000000001
1111110000010000
0000000000001100
1110101010000111
0000000000000000
1111110000010000
0000000000000010
1110001100001000
0000000000001110
1110101010000111
输出是正确的,这就是我想要的。但是如果我这样做的话

ebin@tux:~/ass3/assignment3$ ./myassembler < MaxL.asm >test.txt
ebin@tux:~/ass3/assignment3$ cat test.txt
1110001100000000
111000000
111000000
111000000
1110101010000000
1110101010000000
1110101010000000
1110101010000000
1110101010000000
1110110000000000
111000000
1110101010000000
111000000
1110101010000000
111000000
111000000
111000000
1110101010000000
1110101010000000
111111000
111000000
1110101010000000
111000000
111000000
111000000
111000000
111000000
111000000
1110101010000000
1110110000000000
1110110000000000
1110110000000000
1110110000000000
1110110000000000
1110110000000000
1110110000000000
1110110000000000
1110101010000000
1110101010000000
111000000
111000000
1110001100000000
111000000
111000000
111000000
1110001100000000
111000000
111000000
111000000
1110111010000000
1110001100000000
1110101010000000
111000000
1110111111000000
1110101010000000
1110101010000000
1110111111000000
1110101010000000
1110101010000000

我接受输入的方式有什么问题?如何修复它?《山姆我的水晶球》表明人们肯定会要求你遵守“只有今天”的承诺,你会后悔的。我等不及明天了!整个社区都会为我做我的工作yey。我会去玩电子游戏,这对我很有帮助。修复我自己的bug是非常令人兴奋的,是的,我已经成功了。谢谢,他不必再打开文件两次。将文件名提供给构造函数不会打开该文件。在这之后,他不需要打电话给open,我知道出了什么问题。多亏了你。没有使用您的格式,但能够解决问题。非常感谢你
ifstream fin(argv[argc-1]);
fin.open(argv[argc-1]);
void function_that_does_actual_work(std::istream& in)
{
    // Do lots of useful and important stuff...
}

int main(int argc, char* argv[])
{
    if (argc == 2)
    {
        std::ifstream file(argv[1]);
        function_that_does_actual_work(file);
    }
    else if (argc == 1)
    {
        function_that_does_actual_work(std::cin);
    }
    else
    {
        std::cout << "No file provided\n";
    }
}