在C+中执行程序时输入文件名+; 我正在学习C++,然后我在搜索我喜欢的领域中的一些代码:文件I/O,但是我想知道我如何调整我的代码,让用户键入他想看到的文件,比如WGET,但是我的程序是这样的: C:\> FileSize test.txt

在C+中执行程序时输入文件名+; 我正在学习C++,然后我在搜索我喜欢的领域中的一些代码:文件I/O,但是我想知道我如何调整我的代码,让用户键入他想看到的文件,比如WGET,但是我的程序是这样的: C:\> FileSize test.txt,c++,file-io,C++,File Io,我的程序代码如下: // obtaining file size #include <iostream> #include <fstream> using namespace std; int main () { long begin,end; ifstream myfile ("example.txt"); begin = myfile.tellg(); myfile.seekg (0, ios::end); end = myfile.tellg(

我的程序代码如下:

// obtaining file size
#include <iostream>
#include <fstream>
using namespace std;

int main () {
  long begin,end;
  ifstream myfile ("example.txt");
  begin = myfile.tellg();
  myfile.seekg (0, ios::end);
  end = myfile.tellg();
  myfile.close();
  cout << "size is: " << (end-begin) << " bytes.\n";
  return 0;
}
//获取文件大小
#包括
#包括
使用名称空间std;
int main(){
漫长的开始,漫长的结束;
ifstream myfile(“example.txt”);
begin=myfile.tellg();
myfile.seekg(0,ios::end);
end=myfile.tellg();
myfile.close();

coutMain接受两个参数,您可以使用它们来执行此操作。请参见以下内容:


Main接受两个参数,您可以使用它们来执行此操作。请参见以下内容:

main()
接受参数:

int main(int argc, char** argv) {
    ...
    ifstream myfile (argv[1]);
    ...
}
您还可以变得更聪明,并为命令行上指定的每个文件循环:

int main(int argc, char** argv) {
    for (int file = 1; file < argc;  file++) {
        ...
        ifstream myfile (argv[file]);
        ...
    }
}
int main(int argc,char**argv){
对于(int file=1;file
请注意,argv[0]是一个字符串,指向您自己的程序名。

main()
接受参数:

int main(int argc, char** argv) {
    ...
    ifstream myfile (argv[1]);
    ...
}
您还可以变得更聪明,并为命令行上指定的每个文件循环:

int main(int argc, char** argv) {
    for (int file = 1; file < argc;  file++) {
        ...
        ifstream myfile (argv[file]);
        ...
    }
}
int main(int argc,char**argv){
对于(int file=1;file

请注意,argv[0]是一个指向您自己程序名称的字符串。

在下面的示例中,argv包含以null结尾的字符串数组形式的命令行参数,argc包含一个整数,告诉您传递了多少个参数

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

int main ( int argc, char** argv )
{
  long begin,end;
  if( argc < 2 )
  {
     cout << "No file was passed. Usage: myprog.exe filetotest.txt";
     return 1;
  }

  ifstream myfile ( argv[1] );
  begin = myfile.tellg();
  myfile.seekg (0, ios::end);
  end = myfile.tellg();
  myfile.close();
  cout << "size is: " << (end-begin) << " bytes.\n";
  return 0;
}
#包括
#包括
使用名称空间std;
int main(int argc,字符**argv)
{
漫长的开始,漫长的结束;
如果(argc<2)
{

cout在下面的示例中,argv包含以null结尾的字符串数组形式的命令行参数,argc包含一个整数,告诉您传递了多少个参数

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

int main ( int argc, char** argv )
{
  long begin,end;
  if( argc < 2 )
  {
     cout << "No file was passed. Usage: myprog.exe filetotest.txt";
     return 1;
  }

  ifstream myfile ( argv[1] );
  begin = myfile.tellg();
  myfile.seekg (0, ios::end);
  end = myfile.tellg();
  myfile.close();
  cout << "size is: " << (end-begin) << " bytes.\n";
  return 0;
}
#包括
#包括
使用名称空间std;
int main(int argc,字符**argv)
{
漫长的开始,漫长的结束;
如果(argc<2)
{

cout次要拼写错误“args[1]”应为“argv[0]”;次要拼写错误“args[1]”应为“argv[0]”,应为ifstream myfile(argv[1]);因为argv[0]包含可执行文件的名称。Woops应为argv[1]而不是argv[0]但是当我键入一个文件或不键入时,程序的消息是every:size是:0字节。有什么用呢?
argc
检查是错误的。
argc==1
不是参数,
argc>=2
至少是一个参数。啊,是的,这也应该更新,我将编辑帖子以反映更正。这应该是ifstream myfile(argv[1]);因为argv[0]包含可执行文件的名称。Woops应该是argv[1]而不是argv[0]但是当我键入一个文件或不键入时,程序的消息是every:size是:0字节。这是怎么回事?
argc
检查是错误的。
argc==1
不是参数,
argc>=2
至少是一个参数。啊,是的,这也应该更新,我将编辑帖子以反映更正。我意识到Stackoverflow是打开的对每个人来说,这将是一个免费的信息交换,但是你问了很多问题,一个简单的谷歌搜索就能回答。我以前在谷歌中搜索过!建议你在这种情况下使用stat函数获取文件大小。它填充了一个“struct stat”如果成功,您可以使用st_size to来检查文件大小的值。上面的代码没有检查文件是否不存在。总之,只是挑剔…关键是打开从命令行传入的文件名:)我意识到Stackoverflow对每个人都开放,因此这将是一个免费的信息交换,但是你问了很多问题,简单的谷歌搜索就能回答。我以前在谷歌中搜索过!建议你在这种情况下使用stat函数来获取文件大小。它填充“struct stat”如果成功,您可以使用st_size to来检查文件大小的值。上面的代码没有检查文件是否不存在。总之,只是挑剔…关键是打开从命令行传入的文件名:)