您的位置:首页 > 其它

关于string对象的按行读写

2015-12-15 23:18 190 查看
今晚在做题时遇到了关于string的读写问题,之前没有引起注意导致出错。
想从文件中读取一行字符串(含空格,如:where are
you),先贴代码:
string s1;
ifstream fin("in.txt");
ofstream
fout("out.txt");
for(int i=0;i<n;i++)

{ k1=0;

k2=0;

fin>>m1;

fin>>s1;
//出错行
for(int j=0;j<s1.size();j++)
{

if(s1[j]>='A'&&s1[j]<='Z')

t1[k1++]=s1[j];

}

直接用fin>>s1读取时发现,只能读空格前的第一个字符串,而不能达到我读取整行的目的,查了资料才知道,用fin读取默认的是遇到空格则将空格前读入的字符串写入缓冲区,然后按照要求输出。这样就无法读取含空格的一整行。

解决方法一:使用getline()函数。
getline函数能够读取一整行字符串,直至换行,修改后的代码如下:

code:
string s1;
ifstream fin("in.txt");
getline(fin,s1);//这样即可以读取整行字符串

解决方法二:用字符数组代替string,即定义char s
,同样使用getline函数

code:
char
s
;
ifstream
fin("in.txt");
fin.getline(s,N);

以上两种均可以按行从文件中读取字符串。

PS:细节决定成败,不断总结才是进步之道
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: