如何在C ++中自动打开输入文件?

时间:2011-03-20 22:39:09

标签: c++ file-io

在我用C ++编写的程序中,我按如下方式打开一个文件:

std::ifstream file("testfile.txt");

此用法可以处理输入文件具有固定名称“testfile.txt”的情况。 我想知道如何允许用户输入文件名,例如“userA.txt”,程序会自动打开该文件“userA.txt”。

2 个答案:

答案 0 :(得分:7)

使用变量。如果你还不清楚它们到底是什么,我建议找一个好的介绍book

#include <iostream>
#include <string>

// ...

std::string filename;    // This is a variable of type std::string which holds a series of characters in memory

std::cin >> filename;    // Read in the filename from the console

std::ifstream file(filename.c_str());    // c_str() gets a C-style representation of the string (which is what the std::ifstream constructor is expecting)

如果文件名中可以​​包含空格,那么cin >>(在第一个空格和换行符处停止输入)将不会删除它。相反,您可以使用getline()

getline(cin, filename);    // Reads a line of input from the console into the filename variable

答案 1 :(得分:3)

您可以使用argcargv获取命令行参数。

#include <fstream>

int main(int argc, char* argv[])
{
    // argv[0] is the path to your executable.
    if(argc < 2) return 0 ;

    // argv[1] is the first command line option.
    std::ifstream file(argv[1]);

    // You can process file here.
}

命令行用法为:

./yourexecutable inputfile.txt