C++ 如何返回首字母大写的单词

C++ 如何返回首字母大写的单词,c++,C++,我有以下资料: string ProperNoun::GetWord() { word[0] = toupper(word[0]); return (word); } 我很难让getter返回的单词将第一个字母大写,如果是propernoun,使用上面的代码会使单词在我的字典中不可查找,我假设它使单词大写,然后搜索,因此我更改了我正在搜索的单词,使其具有大写字母,尽管它仍然没有找到它。我的问题是,如果第一个字母是正确的字母,我如何使我的代码大写。您可以在第二个单词getter中

我有以下资料:

string ProperNoun::GetWord() {
    word[0] = toupper(word[0]);
    return (word);
}

我很难让getter返回的单词将第一个字母大写,如果是propernoun,使用上面的代码会使单词在我的字典中不可查找,我假设它使单词大写,然后搜索,因此我更改了我正在搜索的单词,使其具有大写字母,尽管它仍然没有找到它。我的问题是,如果第一个字母是正确的字母,我如何使我的代码大写。

您可以在第二个单词getter中进行大写,仅用于显示。此getter不会修改存储的字

string ProperNoun::GetWordForDisplay() {
    string s = word;
    s[0] = toupper(s[0]);
    return s;
}
或者,您可以添加第二个单词getter,用于字典搜索。此getter可以返回单词的小写副本

string ProperNoun::GetWordForSearch() {
    string s = word;
    std::transform(s.begin(), s.end(), s.begin(), ::tolower);
    return s;
}

你连珠炮似的句子很难理解。你知道局部变量的概念吗?第二个亚当。更重要的可能是这个问题;如果你知道它是一个专有名词,那么为什么不在你创建对象时大写它,而不是每次遍历字典时都这样做呢?我认为你应该在codereview.stackexchange.com上询问你对整个代码的反馈。在更深的层次上,有几件事是错误的。(1) 并不是所有的专有名词都用这个简单的方案大写。(2) 为人类编写的词典中的搜索无论如何都应该是不区分大小写的(最好是模糊的,这样斯佩林迷思就不会致命)。(3) 如果你想大写第一个字母,为什么不在构词法上呢?