1.逐词读取,用 空格 区分每个词
创建输入流对象infile
打开相应的文件,创建一个字符串data
来存储文件中的数据:
ifstream infile("data.txt");
string data;
while (infile) {
infile >> data;
cout << "read from file:" << data<<" ";
}
2.逐行读取,将每行数据读入字符数组中,用 回车换行 区分每行数据
创建输入流对象infile
打开相应的文件,创建一个字符数组data
来存储文件中的数据,此时需要使用getline()
函数来逐行读取文件的数据:
ifstream infile("data.txt");
char data[1000];
while (infile.getline(data, 1000) ) {
cout << "read from file:" << data << endl;
}
3.逐行读取,将每行数据读入字符串内,用 回车换行 区分每行数据
创建输入流对象infile
打开相应的文件,创建一个字符串data
来存储文件中的数据,此时需要使用getline()
函数来逐行读取文件的数据:
ifstream infile("data.txt");
string data;
while (getline(infile, s)) {
cout << "read from file:" << data << endl;
}
这种方式结合C++中数据转换类istringstream
类很容易实现按行读取数据后再按照 空格 分割单个数据。
C++中的数据类型转换类
C++中引入了 istringstream
、ostringstream
、stringstream
这三个类来进行不同类型数据的转换,要使用它们创建对象就必须包含 <sstream>
这个头文件。
istringstream
类用于执行C++风格的串流的输入操作。
istringstream
对象可以绑定一行字符串,然后以空格为分隔符把该行分隔开来。在读取数据文件时可以按行读取数据并存储到字符串中,然后通过istringstream
字符串分割开,并存储到相应类型的变量中。语法格式如下:
istringstream::istringstream(string str);
将一个字符串中数字分割开并赋值给double类型的变量:
string str = "92 20 120.7";
double num1 = 0, num2 = 0, num3 = 0;
istringstream string_to_num(str);
string_to_num >> num1 >> num2 >> num3 ;
cout << num1 << endl << num2 << endl << num3 ;
ostringstream
类用于执行C++风格的串流的输出操作。
ostringstream
对象可以将多种数值转换成字符串,可以用于字符串的合并;
ostringstream os;
string str = "qwerdf";
int i = 6666;
os<<str<<i;
cout<<os.str();//输出:qwer6666
os.str("");//清空,clear()只清除流的状态标志,不能清除流的内容;
strstream
类同时可以支持C++风格的串流的输入输出操作。