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 如何输入输出字符串数组的主要内容,如果未能解决你的问题,请参考以下文章

c++中cin/cout如何输入输出字符串数组?

C++中cin和cout输入输出流用法简介

C++中cin和cout输入输出流用法简介

快速输入输出

字符串类型的输入输出

c++中scanf和cout有啥区别