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);
在使用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);
相关文章推荐
- C++学习之使用new的注意事项
- C++学习笔记(二):使用const、static类成员的注意事项
- c++中string使用的注意事项
- C++学习之使用new的注意事项
- C++在android上的使用注意事项
- C++中typename关键字的使用方法和注意事项
- Windows Azure服务购买,收费,使用注意事项及学习资料推荐
- C++中typename关键字的使用方法和注意事项
- 使用C++实现JNI接口需要注意的事项
- Brew中使用C++需要注意的事项
- C++ typename 关键字的使用方法和注意事项
- C++中typename关键字的使用方法和注意事项
- jQuery-使用选择器注意事项 学习笔记十
- C++模板使用注意事项
- 关注C++细节——浅谈指针使用中注意事项
- C++ 二叉树的实现以及指针使用注意事项
- 学习:使用SHAREPOINT对象模型开发时注意事项(转)
- C++ Primer学习笔记:引用的使用注意事项
- C++学习笔记-类定义的注意事项和C#的区别
- [学习笔记]寄存器使用注意事项