c++,cin/cout 如何输入输出字符串数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++,cin/cout 如何输入输出字符串数组相关的知识,希望对你有一定的参考价值。
#include <iostream>
using namespace std;
int main()
char name[20];
cout<<"name:";
cin>>name[20];
cout<<name[20]<<endl;
cin>>name[20]; 这样输入有问题吗?似乎输入的时候只输出第一个字母...比如我输入abcd,他只输出a....怎么修改呢
C++的输出和输入是用“流”(stream)的方式实现的。图3.2和图3.3表示C++通过流进行输入输出的过程。
cout语句的一般格式为:
cout<<表达式1<<表达式2<<……<<表达式n;
cin语句的一般格式为:
cin>>变量1>>变量2>>……>>变量n;
参考技术A cin >> name就行cin >> name[20],name[n]是name数组里下标为n的元素,所以实际的效果只是输入了name[n]一个字符
另外在这里你对name[20]的引用已经越界
而且cin>>到一个char数组里也是极不安全的
这种情况一般是使用cin.get( name, 20 )的形式,指定数组的长度以防止输入越界
更好且更安全的做法是使用string
#include <string>
string a;
cin >> a; 参考技术B 你输入的值是赋给name[20],前面的19项都为赋值,你的输出也只是输出name[20]一个字符。修改如下:#include <iostream>
using namespace std;
int main()
char name[20];
cout<<"name:";
cin>>name ;
cout<<name <<endl;
参考技术C cin>>name[20];
你这样写意思是在给name[20]这个元素赋值
但是name最大的下标是19显然越界了
如果要用字符串数组赋值可以直接这样
cin>>name;
cout<<name;
不过要注意数组大小够不够的问题哦 参考技术D char name[20]中的“20”指的是数组大小,而数组是从下标为0开始的,name[20]明显不属于数组name,越界了。
以上是关于c++,cin/cout 如何输入输出字符串数组的主要内容,如果未能解决你的问题,请参考以下文章