Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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++_String_Function_Reverse - Fatal编程技术网

C++ 我的功能中是否遗漏了什么?

C++ 我的功能中是否遗漏了什么?,c++,string,function,reverse,C++,String,Function,Reverse,这就是我到目前为止所做的,我不断地得到一个错误。有什么帮助吗 void ReverseString(char* string) { int len = strlen(string); for(int i = 0; i < len; i++) { string[i] = string[len-i]; } } void ReverseString(字符*字符串){ int len=strlen(字符串); 对于(int i=0;i这是标记C+

这就是我到目前为止所做的,我不断地得到一个错误。有什么帮助吗

void ReverseString(char* string) {
    int len = strlen(string);
    for(int i = 0; i < len; i++)
    {
         string[i] = string[len-i];
    }
}
void ReverseString(字符*字符串){
int len=strlen(字符串);
对于(int i=0;i
  • i
    0
    时,您将访问
    string[len]
    作为 长度数组中的有效索引
    len
    [0,len-1]
如果我正确理解您的意图,您正在尝试反转字符串,但我可以看到缺少一些内容:

  • 你不是在交换
  • 同样,交换也应该发生在 阵列的一半,而不是 整个阵列
以下代码片段修复了这些问题:

int len = strlen(string);
for(int i = 0; i < len/2; i++) {
    swap(string[len-i-1],string[i]);
}
int len=strlen(字符串);
对于(int i=0;i
首先,第6行会出现错误


{
更改为
}
。然后重试。

除了前面提到的两个错误之外:


您将使用原始字符串生成回文。上半部分将变为与下半部分相反的部分。然而,下半年将保持不变。这不是函数名所声明的。

应该是
string[i]=string[len-i-1]

// added (untested):  

void ReverseString(char * string) {   
    int len = strlen(string);  
    for(int i = 0; i < len / 2; i++)  
    {  
         string[i] ^= string[len-i-1];  
         string[len-i-1] ^= string[i];  
         string[i] ^= string[len-i-1];  
    }  
} 
//添加(未测试):
无效反向字符串(字符*字符串){
int len=strlen(字符串);
对于(int i=0;i > > p>这是标记C++,用C++方式……< /p>
std::string ReverseString(std::string str) 
{
  std::reverse(str.begin(), str.end());
  return str;
}

知道错误会很有帮助。是因为您正在使用
{
for
块的
末尾?我想你丢失了
std::string
std::reverse
。这是我的一个复制错误。但这不是我得到错误的原因。@Josh Lake你接受了答案,所以我想问题已经解决了,我没有必要更改我的。@oops,在pla中反转字符串ce需要交换,my badhow about
返回std::string(str.rbegin(),str.rend());
然后您甚至可以将输入作为常量引用。