您的位置:首页 > 编程语言 > C语言/C++

C++学习(五)——string使用注意事项(一)

2016-10-30 20:56 369 查看
今天编程遇到一个问题,从txt读555 111 9999,然后显示出来,结果开始程序一直只显示555;之后经过网页搜索终于找到了问题所在;

在使用getline()时,我们需要明白其原理:

getline (char* s, streamsize n, char delim );

第一个参数是存储的位置,第二个是读取的最大字符数,第三个参数是终结符,默认为'\n',你可以自行设置

你的程序里,默认使用'\n'为终结符,才导致每次读取一行的问题,根据你的输入格式,你可以用空格作为终结符,这样可以只输入一行即可。

如果,你仍然使用'\n'作为终结符(默认),而且只输入一行,你理解的是444后面没有读到,是不对的。其实是在读取555后,输入流input错误了。针对第一个getline(buf,4);默认终结符'\n',输入是555
111 9999,在读第四个字符时,判断是否是'\n',若是则结束,若不是则输入流发生错误,这是你输入过多导致。

解决方式是:在之后加上input.clear();清空输入流状态。

部分代码如下: int a, ex, num;
char buf[35];
Input.getline(buf, 25);
mylist[i].SetName(buf);

Input.getline(buf, 30);
mylist[i].SetAddress(buf);

Input.getline(buf, 4);
a = atoi(buf);
Input.clear();
Input.getline(buf, 5);
ex = atoi(buf);
Input.clear();
Input.getline(buf, 7);
num = atoi(buf);
Input.clear();
mylist[i].SetPhone(a, ex, num);

cout.setf(ios::left);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: