请问怎么转化这样的字符串?
请问怎么转化这样的字符串?如“abcde ”变为“bcde a”,也就是说把第一个字母放到最后一个,其他的依次前移。
请给出源代码,谢谢!
我按下面这样做怎么不行呢?
假如已知 tempOut = "abcde "
int length = wcslen(tempOut);
TCHAR strOut[MAX_PATH] = {0};
for (int i = 1; i < length; i++)
{
wcscat(strOut,tempOut[i]);
}
wcscat(strOut,(const wchar_t *)tempOut[0]);
请问怎么写才正确?
[解决办法]
- C# code
#include <algorithm>#include <vector>#include<iostream>#include<iterator>using namespace std;int main(int,char*[]){ char sz[]="abcde "; vector<char> v(sz,sz+sizeof(sz) ); v.push_back( *(v.begin()) ); v.erase(v.begin() ); copy(v.begin(),v.end(),ostream_iterator<char>(cout,"") );}
[解决办法]
楼主的代码太过于累赘,再说wcscat的用法也不对,wcscat(strOut,tempOut[i]); 第二个参数需const char*
还是参考下面的吧:
#include <string>
#include <iostream>
using namespace std;
int main()
{
char *tempOut="abcde ";
int length = strlen(tempOut);
string strOut;
for (int i = 1; i < length; i++)
{
strOut+=tempOut[i];
}
strOut+=tempOut[0];
cout<<strOut<<endl;
return 0;
}
[解决办法]
- C/C++ code
#include <algorithm> #include <iostream> #include <cstring> using namespace std; int main( void ) { char p[] = "abcde "; size_t len = strlen( p ); rotate( p, p+1, p+len ); cout < < p < < endl; }