题目描述(8.4)
代码
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using std::ifstream;
using std::string;
using std::vector;
using std::cerr;
using std::endl;
using std::cout;
void func(const string &ifile, vector<string> &s);
int main()
{
string ifile("C:\\Users\\dxm\\Desktop\\Vs_code\\ExerciseCode\\data.txt");
vector<string> s;
func(ifile, s);
for (auto c : s)
cout << c << endl;
return 0;
}
void func(const string &ifile, vector<string> &s)
{
ifstream in(ifile);
string line;
if (in)
{
while (getline(in, line))
s.push_back(line);
}
else
{
cerr << "无法打开文件,请确认文件路径是否正确:" << endl;
}
}
测试用例
文件内容:
输出:
题目描述(8.5)
代码
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using std::ifstream;
using std::string;
using std::vector;
using std::cerr;
using std::endl;
using std::cout;
void func(const string &ifile, vector<string> &s);
int main()
{
string ifile("C:\\Users\\丁学明\\Desktop\\Vs_code\\ExerciseCode\\data.txt");
vector<string> s;
func(ifile, s);
for (auto c : s)
cout << c << endl;
return 0;
}
void func(const string &ifile, vector<string> &s)
{
ifstream in(ifile);
string line;
if (in)
{
while (in >> line) //将上题的代码在此处改变即可
s.push_back(line);
}
else
{
cerr << "无法打开文件,请确认文件路径是否正确:" << endl;
}
}
测试用例
文件内容:
输出:
总结
- 读取文件内容时,使用ifstream类型
- 将创建的ifstream对象与文件路径关联时,文件路径可以是string对象,其格式为:
string ifile("C:\\Users\\丁学明\\Desktop\\Vs_code\\ExerciseCode\\data.txt");
- 将ifstream对象与文件关联后,文件中的内容全部存储在该对象中,读取对象中的存储的内容时,可以按行读取,也可以按由whitespace隔开的方式读取
//in对象的类型为ifstream,按行读取
while(getline(in, line))
{...};
//in对象的类型为ifstream,按whitespace隔开的方式读取
while(in >> line)
{...};