> s; -6ren">
gpt4 book ai didi

c++ - 使用strupr和strlwr时报错 "invalid conversion of char to char*"如何解决?

转载 作者:太空宇宙 更新时间:2023-11-04 14:37:51 25 4
gpt4 key购买 nike

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
int i;
char s[100];
cin >> s;
for(i=0;i<strlen(s);i++)
{
if(islower(s[i])==1)
{
s[i]=strupr(s[i]);
cout << s[i];
}
else
{
s[i]=strlwr(s[i]);
cout << s[i];
}
}
return 0;
}

这两行即 s[i]=strupr(s[i])s[i]=strlwr(s[i]) 显示此错误:

invalid conversion from char to char*.

我该如何解决?谢谢。

最佳答案

您应该改用这两个:

s[i] = std::toupper(s[i]);
s[i] = std::tolower(s[i]);

记得包括 <cctype> .这里是一些文档的链接 std::toupperstd::tolower .

问题是 struprstrlwr处理整个字符串,而不是单个字符。此外,它们就地运行并且是非标准的。

旁注:

您可以考虑使用 std::string s而不是 char s[100] , 这消除了 cin >> s; 中的当前溢出机会.

更新:

可以使用 std::transform像这样:

std::transform(std::begin(s), std::end(s), std::begin(s), [] (char c) { return std::islower(c) ? std::toupper(c) : std::tolower(c); });

使用 std::begin(s) 的一个好处和 std::end(s)是它适用于 std::string , std::vector甚至char[100] .

关于c++ - 使用strupr和strlwr时报错 "invalid conversion of char to char*"如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43468474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com