您的位置:首页 > 编程语言 > C语言/C++

C++中实现控制台中输入的内容保存到文件中

2014-07-21 09:14 141 查看
Xiaohui Huang, hxh1994@foxmail.com

China University of Geosciences, Wuhan , 430074

School of Computer. Network Engineering

C++中实现将控制台中输入的内容保存在文件中

一、需求说明

最近在做一个项目,有一个功能要求是我们在windows的控制台上(快捷键win+R->cmd)输入一组字符串(该字符串可能包含空格或者换行符),直到我们输入一个结束标识符后,系统将我们之前在windows控制台上输入的内容保存在本地的文件中。

二、核心技术分析

要实现本功能主要要考以下两点:

(1)文件的相关操作:我们要实现将输入的内容保存在文件中,不可避免的会涉及文件的相关操作;

(2)如何实现在控制台上一直输入直至遇到结束标识符:大家都知道,当我们在控制台上输入时如果输出的字符串中含有空格,那么系统就会将其分成多个字符串(以空格为区分标准)。

查看网上的相关资料发现了如下一种方法:

int _input;
fstream _out;//文件输出流

while(cin>>_input)
{
	_out<<_input;	
	cout<<"输入的约束条件为:"<<_input<<endl;
}


但是测试之后发现该方法有一些弊端:(1)当我们输入带空格的字符串的时候,系统是将其按多行存储(以空格作为区分),(2)退出无限输入模式是在控制台上使用快捷键CTRL+C或者CTRL+Z。

显然不满足我们的要求,在上述代码上稍作修改即可达到题目要求,详细代码见第三节。

三、源代码展示

编译环境:Visual Studio 2012

#include "stdafx.h"

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

using namespace std;

class Test
{
	private:
		char _name[20];
		string _input;//约束条件
		fstream _out;//文件输出流
	public:
		Test();//构造函数 
		~Test();//析构函数
		void Condition();
		void show();
			 
};

Test::Test()
{
	strcpy_s(_name,"Default.txt");//默认新建文件名为Default.txt
	_input="";//默认是无输出条件
	cout<<"请输入创建文件名字(默认情况下为Default.txt):";
	cin>>_name;//用户可修改文件名 
	_out.open(_name,ios::out|ios::app);
}

Test::~Test()
{
	_out.close();
}

void Test::Condition()
{
	cout<<"请输入约束条件:"<<endl;
	getline(cin,_input);
	while(getline(cin,_input))
	{
		if(_input=="0") break;
		_out<<_input<<endl;
	}
	
}

int _tmain(int argc, _TCHAR* argv[])
{
	Test *a=new Test();
	a->Condition();
	system("pause");
}


Visual 2012下的文件目录:



运行结果截图:



查看项目文件夹,打开系统自动新建的文件my.txt



That is all. Thank you.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐