如何在c ++中将第一个字母转换为大写?

时间:2017-03-20 03:06:18

标签: c++ string

我有一个结构

struct StudentRecord{
char StudentFamilyName[20]
}gRecs[50];

cout << "Family Name: ";
cin >> gRecs[50].StudentFamilyName;
char str[20];
str[20] = toupper(gRecs[i].StudentFamilyName[0]);
cout << str;

我想要做的是将姓氏的第一个字母存储为 大写,其余为小写?我怎么做? 我使用toupper但是当我实现它时它不起作用。任何人都可以帮我吗?谢谢。

注意:这是一个考试问题。

2 个答案:

答案 0 :(得分:2)

以下是使用字符算术大写字符串的方法:

url

答案 1 :(得分:1)

您的问题与toupper无关。实际上有几个。

cin >> gRecs[50]

gRecs的大小为50,因此索引50超出范围。要插入第一条记录,您将使用

cin >> gRecs[0].StudentFamilyName;

第二条记录:gRecs[1]等。

接下来,

char str[20];
str[20] = toupper(str[0]);

您声明str,其中未填充任何内容,然后在其上调用toupper。 索引([20])是第21个字符(超出范围)。您正试图转换str toupper中的第21个字符。

您需要的是:

// i is the index into your student records array, possibly in a loop
cin >> gRecs[i].StudentFamilyName;
gRecs[i].StudentFamilyName[0] = toupper(gRecs[i].StudentFamilyName[0]);