如何在C ++中排除字符串的有限字符?

时间:2019-01-26 10:40:40

标签: c++

我正在为学生百分比生成器构建程序。在程序中,我想将输入的学生姓名打印成特定的字符,例如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个字符。有什么办法吗?

3 个答案:

答案 0 :(得分:2)

是的,您可以使用字符串数据类型提供的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;
}

答案 1 :(得分: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()

答案 2 :(得分:0)

如果您不想只存储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;
}