时间:2021-05-20
最近在做题的时候在处理输入时遇到一个令人头疼的问题,今天解决了和大家分享一下:
比如题目要求的输入为一行数,数与数之间用空格间隔开,数的个数未知,数也有正有负:
11 -2 65 7
那么如何把这个输入保存到数组a中,且数组a中的值为a[0]=11,a[1]=-2,a[3]=65,a[4]=7呢?
先看代码:
#include <iostream>#include <stdio.h>using namespace std;int main(){ int a[20]; int i = 0; cin>>a[i++]; while(getchar()!='\n') { cin>>a[i++]; } for(int j=0;j<i;j++) { cout<<"a["<<j<<"]:"<<a[j]<<endl; }}关于getchar()函数:
该函数返回输入流的每一个字符,在这段程序中当该函数判断当前字符不是换行符时,则输入流cin向数组写入一个数字。
有的同学可能会问为什么这里会写一整个数字而不是一个字符,这里说一些我的见解,我们平时使用cin时,一般都是这样使用的:cin>>a>>b,在控制台实际输入时a和b是以空格分开的,也就是说cin会一直读入字符直到遇到空格或换行符,那么我们的程序里的cin也就一直读入字符了。
其他问题:
该程序可以处理以任何字符分隔数字的字符串,包括冒号分号甚至小数点,目前还不知原因为何
补充:C++输入未知长度字符串存入数组
记录C++学习过程的问题,方便以后自己查看
int main(){string str;char temp;while((temp=cin.get())!='\n'){str +=temp;}const int LEN =str.length();char* dest = new char[LEN];for(int i = 0;i<LEN;i++) //将字符串保回存到字符数组中答{dest[i]=str[i];cout<<dest[i];}delete 【】dest;return 0;}以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在C语言中我们操作字符串肯定用到的是指针或者数组,这样相对来说对字符串的处理还是比较麻烦的,好在C++中提供了string类型的支持,让我们在处理字符串时方便了
C++字符串string类在C语言里,字符串是用字符数组来表示的,而对于应用层而言,会经常用到字符串,而继续使用字符数组,就使得效率非常低.所以在C++标准库里
在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作。以下是C字符串和C++中string的区别:C字符串string对
C++/C回文字符串的实例详解判断输入的字符串是不是回文字符串,正反读一样。.C版#includeintmain(){charhe[100];chara;int
C++字符数组用来存放字符数据的数组是字符数组,字符数组中的一个元素存放一个字符。字符数组具有数组的共同属性。由于字符串应用广泛,C和C++专门为它提供了许多方