【问题标题】:program in c++. size of char array is 5 but value more than 5 char is also accepted [duplicate]c++中的程序。 char 数组的大小为 5,但也接受大于 5 char 的值 [重复]
【发布时间】:2015-04-20 13:17:57
【问题描述】:

这是一个用c++编写的短程序

#include<iostream>
using namespace std;

int main(){
  char s[5];
  cout<<"enter your name"<<endl;
  cin>>s;
  cout<<"Hello"<<s<<endl;
  return 0;
}

大于 5 的值也被接受 它背后的概念是什么??

【问题讨论】:

  • 下次请正确格式化您的帖子 - 在提交之前检查预览。
  • 这就是为什么你应该使用std::string
  • 不幸的是,&gt;&gt; 不会尊重您的缓冲区大小。尝试使用cin.get() 来显式读取n 字符。

标签: c++


【解决方案1】:

你确实是对的。尝试在s 中放入超过 5 个字符(包括空终止符)是未定义的行为

在 C++ 中,最好的办法是改用 std::string。为std::string 提供了&lt;&lt;&gt;&gt; 的适当重载。

【讨论】:

    猜你喜欢
    • 2018-04-14
    • 2015-08-22
    • 2012-03-21
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    相关资源
    最近更新 更多