C ++输出由于cout而改变

时间:2016-12-02 18:39:29

标签: c++ string

我正在做一个我们必须编码字符串的问题。问题如下:

  

给定一个字符串,您的任务是完成函数encode,返回给定字符串的行程编码字符串。例如。如果输入字符串是.columns,则该函数应返回.agg()。您需要完成函数编码,该函数只接受一个参数,即要编码的字符串,并返回编码的字符串。

"wwwwaaadexxxxxx"

如果我注释掉"w4a3d1e1x6"语句,则会打印正确的输出,除非它前面有空格。

我还尝试将字符串char *encode(char *src) { char previous=src[0]; int i=0; int count=0; string s=""; for(i=0;src[i]!='\0';i++){ if(previous==src[i]) count++; if(previous!=src[i]){ s=s+previous+to_string(count); count=1; previous=src[i]; } //cout << i << " " ; if(src[i+1]=='\0'){ s+=previous+to_string(count); } } // line for reference // cout << " " ; return &s[0]; } input : hchzvfrkmlnozjk correct output(as given by the website) : h1c1h1z1v1f1r1k1m1l1n1o1z1j1k1 my output : °¼! 内容复制到这样的src内容中,方法是将行代码更改为

cout

现在输出是原始输入字符串,即s

我们无法访问驱动程序,并且我们必须完成该功能的网站完成。

为什么for(i=0;i!='\0';i++){ src[i]=s[i]; } return src; } 会更改输出?在第二种情况下,为什么"hchzvfrkmlnozjk"的原始内容不会被字符串cout的内容覆盖?有什么方法可以解决这个问题吗?

问题可以在这里找到:http://www.practice.geeksforgeeks.org/problem-page.php?pid=700243

0 个答案:

没有答案