我在C++教程中看到过至少两种从文件中读取代码行的方法:
std::ifstream fs("myfile.txt");
if (fs.is_open()) {
while (fs.good()) {
std::string line;
std::getline(fs, line);
// ...
和:
std::ifstream fs("myfile.txt");
std::string line;
while (std::getline(fs, line)) {
// ...
当然,我可以添加一些检查,以确保该文件存在并已打开。除了异常处理之外,有没有理由更喜欢更冗长的第一种模式?你们的标准做法是什么?
发布于 2011-08-28 13:39:44
实际上我更喜欢另一种方式。
for (;;)
{
std::string line;
if (!getline(myFile, line))
break;
...
}
对我来说,它读起来更好,并且字符串的作用域是正确的(即在使用它的循环内,而不是在循环外)。
但是在你写的两个中,第二个是正确的。
发布于 2011-08-28 12:43:47
第一个在每次循环中释放和重新分配字符串,浪费时间。
第二次将字符串写入已存在的空间,删除释放和重新分配,使其实际上比第一次更快(也更好)。
发布于 2011-08-28 12:43:08
尝试此=>
// reading a text file
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main () {
string line;
ifstream myfile ("example.txt");
if (myfile.is_open())
{
while ( myfile.good() )
{
getline (myfile,line);
cout << line << endl;
}
myfile.close();
}
else cout << "Unable to open file";
return 0;
}
https://stackoverflow.com/questions/7219062
复制相似问题