读书人

文件io中的getline函数有关问题

发布时间: 2012-07-28 12:25:13 作者: rapoo

文件io中的getline函数问题

C/C++ code
#include<iostream>#include<fstream>using namespace std;int main(){ifstream input;input.open("city.txt");if(input.fail())cout << "file doesn't exit."<<endl;else{char city[20];while(!input.eof()){input.getline(city,20,'#');cout << city;}}input.close();return 0;}


city.txt:
New Yorkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk # London # Beijing # Hefei
输出:New Yorkkkkkkkkkkkk
然后程序就停了,也不报错,就停在那;
请问是怎么回事?

[解决办法]
char city[20];
需要将其中的20设置得更大一点,比如:
char city[200];

然后:
input.getline(city,20,'#');
改为
input.getline(city,200,'#');
[解决办法]
楼主干脆用String吧,这样方便多了,以下是我修改以后的代码

#include<iostream>
#include<fstream>
#include<string>
using namespace std;

int main()
{
ifstream input;
input.open("city.txt");

if(input.fail())
cout << "file doesn't exit."<<endl;
else
{
//char city[20];
string city;
while(!input.eof())
{
getline(input,city,'#');
cout << city << "\n";
}
}
input.close();
return 0;
}
[解决办法]
内部细节参看此人文章
http://blog.csdn.net/yafeng_jiang/article/details/7106109
[解决办法]
探讨

引用:

引用:

为什么要变大,它不是能循环地往下读吗?

getline就是一次读取一行,那个循环就是读完一行继续读下一行的意思。

现在的问题是,一次读取一行的时候,你给的空间不够装下一行的内容,所以要变大。


getline函数不是一次读一行,而是一次读很多,直到充满数组或遇到delimitchar,在有delimitchar的……

读书人网 >C++

热点推荐