关于IO以及动态数组
[
IO的处理
之前学习IO的时候卡壳在了,设定一个string 变量作为文件路径,但是fstream 对象没法直接使用 string 变量作为文件路径。
查了之后,发现 fstream 类中 成员函数 opne( )的定义是这样的
void open ( const char * filename,
ios_base::openmode mode = ios_base::in | ios_base::out );
void open(const wchar_t *_Filename,
ios_base::openmode mode= ios_base::in | ios_base::out,
int prot = ios_base::_Openprot);
const char * filename //根据定义 要将string 类型 转换为const char * 类型
知道原理就好解决了~_~
查了一下,string 转 const char * 有两种方法
- c_str
- data 成员函数
举例
string path = "e://test.txt";
const char *pathc = path.c_str();
const char *pathd = path.data();
这样就解决问题了
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string path ("E://test.txt");
fstream out;
out.open(path.c_str(),ios::in);
cout<<"Ready to Read"<<endl;
int j1,j2,j3;
out>>j1>>j2>>j3;
cout<<j1<<endl<<j2<<endl<<j3<<endl;
out.close();
}
将IO功能做成函数
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void readNum(const char * path,int p[])
{
fstream out;
out.open(path,ios::in);
cout<<"Getting the data"<<endl;
out>>p[0]>>p[1]>>p[2];
out.close();
}
int main()
{
string path = "E://Code Place//IO test//test.txt";
int n=3;
int *p = new int[n];
readNum(path.c_str(), p);
cout<<p[0]<<' '<<p[1]<<' '<<p[2]<<endl;
delete []p;
}
算是搞定了……下一步写到VS里就行