C++ 修改字符串文字C+的内容+;基于功能约束
我需要通过将字符串作为参数传递给函数lower(char*),将给定的字符串文字转换为小写。该函数只能返回int。 在main()中,我需要以某种方式访问转换后的字符串。 目前,我正在Lower()函数中键入tmp字符串的地址,然后尝试取消对该地址的引用。 代码如下:C++ 修改字符串文字C+的内容+;基于功能约束,c++,string,C++,String,我需要通过将字符串作为参数传递给函数lower(char*),将给定的字符串文字转换为小写。该函数只能返回int。 在main()中,我需要以某种方式访问转换后的字符串。 目前,我正在Lower()函数中键入tmp字符串的地址,然后尝试取消对该地址的引用。 代码如下: #include <stdio.h> #include <string.h> #include <ctype.h> int Lower(char* str) { char tmp[100];
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int Lower(char* str)
{
char tmp[100];
for(int i=0;i<=strlen(str);i++)
{
if(isupper(*(str+i)))
*(tmp+i) = *(str+i)+32;
else
*(tmp+i) = *(str+i);
}
return int(tmp);
}
int main()
{
char* str = "gOAt";
char *rc=(char *)Lower(str);
printf(rc);
return 0;
}
#包括
#包括
#包括
整数下限(字符*str)
{
char-tmp[100];
对于(int i=0;i发布的代码有多处错误。我认为从函数返回的int是一个状态码,当它为1时,它表示转换为小写成功,否则为0。下面是一个执行转换的工作程序:
#include <iostream>
using namespace std;
int lower(char* str)
{
int hasLower = 0;
while(*str)
{
if (*str >= 'A' && *str <= 'Z')
{
*str = (*str - 'A') + 'a';
hasLower = 1;
}
str++;
}
return hasLower;
}
int main(int argc, char** argv)
{
if (argc != 2) { cout << "No input! Exiting..." << endl; return 1; }
char* input = argv[1];
if (lower(input))
{
cout << "Lower case: " << input << endl;
}
else
{
cout << input << " isn't a valid string for lower-case conversion" << endl;
}
return 0;
}
#包括
使用名称空间std;
整数下限(字符*str)
{
int hasLower=0;
while(*str)
{
如果(*str>='A'&&*str问题:为什么使用char*而不使用std::string?-Lower的返回值应该是什么?我猜它不是小写字符串…修改文本会产生未定义的行为当您无法更改原型并且函数返回int时,您希望如何获得降低的字符串?正如其他人所说的,drop类似c的语法,stl的创建是有原因的。其中错误的数量已经成为放弃它、检查赋值和重新开始的有力论据。从无效类型转换到返回自动变量地址,“错误”的级别正接近临界质量。请检查代码的固定工作示例