Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 修改字符串文字C+的内容+;基于功能约束_C++_String - Fatal编程技术网

C++ 修改字符串文字C+的内容+;基于功能约束

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];

我需要通过将字符串作为参数传递给函数lower(char*),将给定的字符串文字转换为小写。该函数只能返回int。 在main()中,我需要以某种方式访问转换后的字符串。 目前,我正在Lower()函数中键入tmp字符串的地址,然后尝试取消对该地址的引用。 代码如下:

#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的创建是有原因的。其中错误的数量已经成为放弃它、检查赋值和重新开始的有力论据。从无效类型转换到返回自动变量地址,“错误”的级别正接近临界质量。请检查代码的固定工作示例