- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
> s; -6ren">
#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::toupper和 std::tolower .
问题是 strupr
和 strlwr
处理整个字符串,而不是单个字符。此外,它们就地运行并且是非标准的。
旁注:
您可以考虑使用 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/
当我在 Windows 上使用代码块构建此代码时,它显示控制台窗口并停止运行,请帮助我修复它 #include #include int main () { char *str="thes
我编写了这个程序,用于将给定输入的元音转换为大写,将辅音转换为小写。一旦字符串转换为大写,它就会转换为小写,但我没有使用 strlwr。这是代码。 void main() { char a[2
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
这个问题已经有答案了: Crash or "segmentation fault" when data is copied/scanned/read to an uninitialized point
我已经从字符串库中编写了 strupr 函数的实现。当我调用这个函数时,程序崩溃了。我已经找到了另一种让它工作的方法,但我想知道为什么这个版本不起作用。程序恰好在执行 *str = (*str) -
我正在编写代码,我在一个编译器中尝试过,一切顺利,但在另一个编译器中它说“函数 strupr 未在此范围内声明”。我不明白为什么会这样。这是我的代码: #include #include int
在 gcc 上编译后运行以下代码时,出现段错误。 #include #include int main(void) { struct emp { char *n;
这是我的代码。 int main() { struct emp { char *n; int age; }; struct emp e1 = {"Dravid", 23}; struc
我正在尝试使用我在网上找到的代码来实现更大的算法,但 Xcode 不支持此功能。我尝试使用库 curses.h(因为 conio.h 未在 Xcode 中定义)但我找不到等效的命令。 最佳答案 在 X
我在网上找的,到处都有string.h的函数,这两个都没有提到。 是因为什么?它们不是在每个编译器中吗? 最佳答案 它们是 Microsoft C 库中的非标准函数。此后,MS 弃用了它们,取而代之的
我是一名优秀的程序员,十分优秀!