大写函数C++
我的转换字符串为大写函数有问题。我现在有两个函数,反向单词和大写字母。reverse当前可以工作并向后输出信息,但由于某些原因,大写字母不能工作。我有一个菜单,允许用户输入一个单词,然后选择反转或改为大写 下面是大写函数的代码片段大写函数C++,c++,c++11,uppercase,C++,C++11,Uppercase,我的转换字符串为大写函数有问题。我现在有两个函数,反向单词和大写字母。reverse当前可以工作并向后输出信息,但由于某些原因,大写字母不能工作。我有一个菜单,允许用户输入一个单词,然后选择反转或改为大写 下面是大写函数的代码片段 string Upperword(string originalString){ string localString; int len = originalString.length(); for (int i = 0 ; i <&l
string Upperword(string originalString){
string localString;
int len = originalString.length();
for (int i = 0 ; i << len; i++)
localString = toupper(originalString[i]);
return localString;
}
有人知道为什么它不会以大写形式输出单词吗?正如其他人所指出的:
i << len
您正在尝试将字符分配给字符串。您希望附加到字符串
你可能想要更接近这一点的东西:
string Upperword(const string& originalString)
{
string localString;
int len = originalString.length();
for (int i = 0 ; i < len; i++)
{
localString += toupper(originalString[i]);
}
return localString;
}
撇开打字错误不谈
您需要首先设置localString的大小。它生成为空,因此设置其元素将使其崩溃。例如,可以通过localString.resizeoriginalString.length;在你做任何事之前。
条件应该是C++,你有STD::String库,如果你使用这个处理字符串,那么只需调用函数/ToePult.ToupPulter,如果它是char数组,那么它只是触发器。向上投票。这是一个由std::strings极大膨胀的接口引起的错误,而不是其他任何错误。您应该将::toupper包装在lambda中以使其更正确:[]无符号字符c{return std::toupperc;}请看@Kevin:我不打算对此进行争论!你被录用了。疯狂地浏览我所有的代码。。。
localString = toupper(originalString[i]);
string Upperword(const string& originalString)
{
string localString;
int len = originalString.length();
for (int i = 0 ; i < len; i++)
{
localString += toupper(originalString[i]);
}
return localString;
}
#include <algorithm>
std::string Upperword(std::string originalString){
std::string localString = std::move(originalString);
std::transform(
localString.begin(),
localString.end(),
localString.begin(),
[](unsigned char c){return std::toupper(c);}
);
return localString;
}