来自文本文件的 C++ 命令行输入

Posted

技术标签:

【中文标题】来自文本文件的 C++ 命令行输入【英文标题】:C++ command line input from a text file 【发布时间】:2014-05-09 05:46:15 【问题描述】:

我想从 .txt 文件中获取数字并通过命令行将它们输入到程序中,如下例所示。我使用 ./program

#include <iostream>

using namespace std;

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

//print 1st number
cout << argv[1];

【问题讨论】:

【参考方案1】:
cout << argv[1];

相当于:

char* arg = argv[1];
cout << arg;

它只是打印程序第一个参数的值

在您的情况下,您没有向程序提供参数。

当你使用时,

./program < input.txt 

input.ext 的内容变成你程序的stdin。您可以使用以下方法处理:

int c;
while ( (c = fgetc(stdin)) != EOF )

   fputc(c, stdout);
 

如果你想继续使用 C++ 流,你可以使用:

int c;
while ( (c = cin.get()) != EOF )

   cout.put(c);
 

【讨论】:

因为fgetcfputc 是真正的C++。是的,当然,随便。 知道如何将值放入变量而不是打印出来吗?【参考方案2】:

你可以这样做:

./program $(cat input.txt)

这就是诀窍。

例如,如果 input.txt 中的数字由空格分隔:

33 1212 1555

跑步:

./program $(cat input.txt)  

将 33 打印到终端。

【讨论】:

【参考方案3】:

为了能够使用 argv 数字需要作为参数提供,即

./程序 23 45 67

对于./program

#include <iostream>
using namespace std;
int n;
int main()

   cin >> n;
   cout << n;

【讨论】:

以上是关于来自文本文件的 C++ 命令行输入的主要内容,如果未能解决你的问题,请参考以下文章

linux之sed命令详解

Linux运维文本处理三剑客之sed命令

Linux Shell学习-sed命令详解

三剑客之sed

Linux下的强大工具之一sed(转),Shell必备

非常快的文本文件处理 (C++)