C++ 如何在C++;?

C++ 如何在C++;?,c++,C++,我正在为学生百分比生成器构建一个程序。在程序中,我想将输入的学生姓名打印到特定字符,例如5。我使用的是数组字符串。 我找了很多,但找不到这个问题的正确答案 我尝试过只使用数组。[我是初学者] #include<iostream> using namespace std; int main() { cout<<"Enter your name:"; char name[20]; cin>>name; //want to show only fir

我正在为学生百分比生成器构建一个程序。在程序中,我想将输入的学生姓名打印到特定字符,例如5。我使用的是数组字符串。 我找了很多,但找不到这个问题的正确答案

我尝试过只使用数组。[我是初学者]

#include<iostream>

using namespace std;
int main()
{
  cout<<"Enter your name:";
  char name[20]; 
  cin>>name; //want to show only first 5 name letters
  cout<<"Your name is "<<name;

  return 0;
}
#包括
使用名称空间std;
int main()
{
coutname;//只显示前5个姓名字母

是的,您可以使用字符串数据类型提供的
substr
方法

#include<iostream>

using namespace std;
int main()
{
  string name; 
  cout << "Enter your name:";
  cin >> name; 
  cout << "Your name is " << name.substr(0, 5);

  return 0;
}
#包括
使用名称空间std;
int main()
{
字符串名;
姓名;
cout非常简单:

std::cout.write(name, std::min(5, strlen(name));
或者,如果使用std::string(最好用于输入读取以避免缓冲区溢出):


如果不想存储整个名称,而只存储5个字符

#包括
#包括
#包括
使用名称空间std;
int main()
{
字符名[6];
对于(int i=0;i<3;i++){
//仅读取前5个字符
cin>>setw(名称大小)>>名称;
//忽略输入缓冲区的其余部分
cin.ignore(数值限制::max(),'\n');

Cout请,不要教新用户从GooGo中的一些坏习惯:如果马克斯或提姆的名字比5个字符短,那程序会崩溃吗?因为这是C++,所以我假设答案是肯定的。@ ROLLANILIG,它不会对长度5也适用。输出也缺少最后的换行符。在这里,只需使用一个简单的
“\n”
。@RolandIllig不要假设。阅读文档:。“返回一个子字符串[pos,pos+count]。如果请求的子字符串超出了字符串的末尾,或者如果count==npos,则返回的子字符串是[pos,
size()
)。”(强调我的)
std::cout.write(name.c_str(), std::min(5, name.length()); // or .data()