如何将文本文件中的字符作为参数

时间:2016-09-25 22:31:33

标签: c++ file text input command

我是C ++的新手,我正试图弄清楚如何从文本文件中获取参数并在我的程序中使用它们。

因此,如果我想在命令中包含文本文件whatever.txt,它将使用指定的行作为参数。

如果文本文件看起来像这样:

1 2

我想从它中使用1和2作为我程序中的参数。

到目前为止,我收集的东西,我需要类似于此的东西:

int main (int argc, char const *argv[]) {

开始,但不知道从哪里开始。

我正试图搞砸某些东西,但我还是很新的,除了循环和我用这种语言做不了多少的东西!

3 个答案:

答案 0 :(得分:1)

如果没有为您提供代码(这将破坏学习如何做这些事情的乐趣),我将遵循的步骤是:

  1. 从命令行中取一个参数作为要从中读取信息的文件名。想想像这样运行你的脚本:
    argv[0]="./myscript"
    然后,argv[1]="whatever.txt"ifstream

  2. 打开文件(或许getline对此有用)。

  3. 遍历文件的每一行(可能使用stringstream将每行放入字符串中)
  4. 解析文件的每一行(我看过if (grade >= 90): letter = 'A' elif (grade >= 80): letter = 'B' elif (grade >= 70) letter = 'C' elif (grade >= 60) letter = 'D' else: letter = 'F' 用于填充字符串中的变量)。
  5. 希望这会对你有所帮助。

答案 1 :(得分:0)

    int main(int argc, char *argv[])

在main函数中检索文件名后,您应该打开每个文件并检索其内容

示例代码

    int main(int argc, char* argv[])
    {
        for(int i=1; i <= argc; i++) // i=1, assuming files arguments are right after the executable
           {
               string fn = argv[i]; //filename
               cout << fn; 
               fstream f;
               f.open(fn);
               //your logic here
               f.close();
           }
     return 0;
     }

https://stackoverflow.com/a/30141375/3323444

答案 2 :(得分:0)

argc是传递给程序的参数数量,argv是一个包含传入参数名称的字符串数组。

至少传递了一个参数,其中argv [0]是程序名称。

在构建此代码之后运行它,形成一个命令提示符:

main.exe data.txt

或者只是DRAG AND DROP文件&#34; data.txt&#34;在你的main.exe上

main.exe是您的程序,data.txt是包含您要使用的数据的文本文件

#include<iostream>
#include<fstream>


int main(int argc, char* argv[])
{

    char c;

    if(argc < 2)
    {
        std::cout << "No file passed to program!" << std::endl;
        return 1;
    }

    std::ifstream in (argv[1] , std::ios::in);
    if(!in)
        std::cout << "Unable to read file: " << argv[1] << std::endl;

    while(in >> c)
        std::cout << c << std::endl;

    in.close();


    std::cin.get();
    std::cout << std::endl;
    return 0;
}