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