根据输入文件名确定输出文件名

原创 2015年07月08日 20:03:45

        这段代码和 molpro 对输入输出文件名的处理方法相同,对输入文件 task.inp 生成输出文件 task.out。即,对输入文件的文件名去掉文件类型后缀,默认的输出文件类型后缀是 .out,这和 molpro 的设定是相同的。另外也保留了去掉文件类型后缀的文件名字符串,以便生成其他的 .log 等等文件之用。至于程序的临时文件,或者用任务名称(即去掉文件类型后缀的输入文件名)结合运行时的 PID 来确定,或者使用任务名称结合一个随机数来确定——目前的打算就是这样。

        使用到的函数是 int string.find_last_of(char),此函数返回 string 中最后一个 char 的下标,若找不到则返回 -1。另外一个用到的函数是 std::string& string.erase(pos, n),即在 string 中从下标 pos (含)开始删除 n 个字符,返回对 string 的引用,其中 pos 与 n 都是 size_t 类型,即 unsigned int。

        代码如下:

#include <iostream>
#include <fstream>
#include <string>

std::string FileName(std::string name)
{
	int site = name.find_last_of('.');
	if (site == 0) {
		name = "output";
	} else if(site > 0) {
		name.erase(site, name.size() - site + 1);
	}
	return name;
}

int main(int argc, char** argv)
{
	if(argc != 2) {
		std::cerr << "input files must be specified!" << std::endl;
		return 1;
	} else {
		std::ifstream infile(argv[1]);
		if(!infile) {
			std::cerr << "unable to open file: " << argv[1] << std::endl;
			return 2;
		}
	}
	std::string filename(FileName(argv[1]));
	std::ofstream outfile((filename + ".out").c_str());
	outfile << "passed!" << std::endl;
	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

vs2010 LINK : fatal error LNK1149: 输出文件名匹配输入文件名“D:\UNice最新版本for微信\lib\VC90\Release\Export.lib”

在自己的工程配置文件xportDll.vcxproj中存在, 去掉即可。       {6bf08867-4fe1-4897-97ae-a531de875e79}       false...
  • duyouxuanduyouxuan
  • duyouxuanduyouxuan
  • 2014年01月03日 09:51
  • 3114

fatal error LNK1149: output filename matches input filename

两个项目生成的.lib .pdg 一样名字的话,后面的就会出现这个错误,把他们改成不一样的即可解决...
  • sgzwiz
  • sgzwiz
  • 2013年11月26日 11:25
  • 2311

文件名的输入和文件追加

//创建两个已含内容的源文件scr.txt和目标文件dst.txt,要求输入文件名。将源文件内容加到目标文件内容的后面。 //建立两个子函数,一个用于追加内容,一个用于输出追加后这两个文件的内容 ...
  • qq_41603266
  • qq_41603266
  • 2018年01月09日 13:07
  • 22

洛谷P1190 接水问题(接个水事情都这么多qwq)

此题源于洛谷P1190 链接奉上qwq:P1190
  • qq_32141117
  • qq_32141117
  • 2017年10月29日 22:11
  • 91

Navicat 导出向导之设置目标文件名

Navicat 设置导出文件的文件名和位置,用户可直接勾选在“源”的表名旁边的按钮指定默认的文件名和位置。如果高亮显示现有的表,它将会被自动勾选并指定一个默认的文件名和位置,根据设置的导出文件格式,在...
  • mathsoftware
  • mathsoftware
  • 2016年05月09日 11:00
  • 667

Java_基础—输出指定目录下指定后缀的文件名

判断D盘目录下是否有后缀名为.txt的文件,如果有,就输出该文件名称
  • SoarFly0807
  • SoarFly0807
  • 2017年07月21日 19:44
  • 220

输入文件名及路径创建该文件,并把从键盘输入的内容保存到该文件,最后将该文件的路径、该文件名及文件中的内容输出到屏幕。

输入文件名及路径创建该文件,并把从键盘输入的内容保存到该文件,最后将该文件的路径、该文件名及文件中的内容输出到屏幕。 #include #include #include using namespa...
  • u010857889
  • u010857889
  • 2017年02月23日 21:36
  • 750

C语言--在命令行输入文件名字并打印文件内容

C语言编程中,经常遇到main函数中argc和argv[]这两个参数。argc是argument count的缩写,即参数的个数;argv是argument vector的缩写,即参数列表。argv[...
  • vernice
  • vernice
  • 2015年06月09日 03:10
  • 4371

MapReduce中的自定义多目录/文件名输出HDFS

转载自 http://my.oschina.net/leejun2005/blog/94706 最近考虑到这样一个需求: 需要把原始的日志文件用hadoop做清洗后,按业务线输出到不...
  • wisgood
  • wisgood
  • 2013年11月25日 10:13
  • 8510

Hadoop的多文件输出及自定义文件名

最近写程序的时候要用到多文件输出。但是在网上找了很多资料,要么是老版本的方法,要么就是新版本的方法。网上很多说0.20.203.0版本的Hadoop中有MultipleOutputs类——确实有,只不...
  • Marshal0826
  • Marshal0826
  • 2014年06月11日 18:49
  • 948
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:根据输入文件名确定输出文件名
举报原因:
原因补充:

(最多只允许输入30个字)