突发奇想对C++输入输出做一点研究,主要是做笔试题自己写输入老是花很多时间,所以做一个总结。

对于输入多行字符串,代码如下:

#include<iostream>
#include<string>
using namespace std; int main() {
int n;
string s;
    cout << "please input row:" << endl;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> s;
cout << s << endl;
}
return 0;
}

但是cin不能输入空格,如果用getline(cin,s),输入一行字符串后程序直接结束了,程序中间还留有空行,代码如下:

#include<iostream>
#include<string>
using namespace std; int main() {
int n;
string s;
cout << "please input row:" << endl;
cin >> n;
for (int i = 0; i < n; i++) {
getline(cin, s);
cout << s << endl;
}
return 0;
}

原因是因为换行符也被读入了,所以将换行符去掉,在cin>>n;后加上一句cin.ignore();结果如下图,

也可以将cin.ignore();换成getchar();但是要引用#include<cstdio>

#include<iostream>
#include<string>
using namespace std; int main() {
int n;
char ch[256];
cout << "please input row:" << endl;
cin >> n;
cin.ignore();
for (int i = 0; i < n; i++) {
gets_s(ch);
cout << ch << endl;
}
return 0;
}

上面这种是采用gets_s();读取也是可行的,另外scanf(“%s”);读取字符串碰到空格和tab键会停下来

下面采用while循环的方式来存入整型数组,由于循环没有结束条件,会不断要求你输入直到达到数组最大上限,因此控制一个n值,然后跳出循环

#include<iostream>
using namespace std; int main() {
int num[100];
int i = 0;
int n = 3;
while (cin>>num[i]) {
cout << num[i] << endl;
if (i >= n)
break;
++i;
}
return 0;
}

最后说下向量的方式,向量是一种很好的数据结构,可以适当扩容,相比较数组要更节省空间,避免浪费多余资源

#include<iostream>
#include<vector>
using namespace std;
using std::vector; int main() {
int n;
cin >> n;
vector<int> nums;
int input;
while (cin>>input) {
nums.push_back(input);
if (nums.size() == n)
break;
}
for (int j = 0; j < n;++j) {
cout << nums[j] << endl;
}
return 0;
}

从结果可以看出,存进向量里面的值受到我设定n的限制

参考:

https://blog.csdn.net/praker/article/details/37612029

最新文章

  1. NYOJ题目114某种序列
  2. Untracked files不想add
  3. BEvent_客制化BusinessEvent通过PLSQL Procedurer接受消息传递(案例)
  4. WINCE 开机自动弹USB连接窗口问题(已解决)
  5. C#中种常用的计时器
  6. Navicat 选择语句
  7. VC++自绘界面
  8. 项目总结二:模块管理之requireJS
  9. Java-ServletRequestWrapper
  10. JavaScript单线程的疑问与解答
  11. sql 找出不包含字母、不包含汉字的数据
  12. BZOJ 3192: [JLOI2013]删除物品(树状数组)
  13. cmd输出控制台传递的参数
  14. 【转】C++命名空间 namespace的作用和使用解析
  15. Networx蓝屏问题
  16. 【angular2+typeScript+ng-zorro】Carousel 走马灯的左右方向控件实现
  17. Credential
  18. 图片的ScaleType详解 ImageView的属性android:scaleType,
  19. flow 类型生成工具 flow-typed 简单使用
  20. csharp: 图片字符间距

热门文章

  1. nacos作为配置中心动态刷新@RefreshScope添加后取值为null的一个问题
  2. R语言 table()函数
  3. 一个基础又很重要的知识点:JDBC原理(基本案例和面试知识点)
  4. pyhton的返回值
  5. (二)Buildroot介绍
  6. Vue 前后台交互,插件
  7. 棋盘 || 状压DP
  8. 插入和查询HBase速度都比较慢
  9. eclipse安装SVN插件的两种方法
  10. Fiddler抓取HTTPS