如何在C++中引用字符串的有限字符

How to cout limited characters of a string in C++?

本文关键字:字符 字符串 引用 C++      更新时间:2023-10-16

我正在为学生百分比生成器构建一个程序。在程序中,我想打印输入的学生姓名,直到特定字符,例如 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;
}

我希望它收集用户输入的数据并打印最多 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::cout.write(name, std::min(5, strlen(name));

或者,如果您使用 std::string(建议用于输入读取以避免缓冲区溢出):

std::cout.write(name.c_str(), std::min(5, name.length()); // or .data()

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

#include <iostream>
#include <iomanip>
#include <limits>
using namespace std;
int main()
{
    char name[6];
    for(int i = 0; i < 3; i++) {
        // Only read first 5 characters
        cin >> setw(sizeof name) >> name;
        // ignore rest of input buffer
        cin.ignore(numeric_limits<streamsize>::max(),'n');
        cout << name << endl;
    }
    return 0;
}