我在C#下面的代碼反轉的字符串:轉換C#和C++按位移
char[] charArray = s.ToCharArray();
int len = s.Length - 1;
for (int i = 0; i < len; i++, len--)
{
charArray[i] ^= charArray[len];
charArray[len] ^= charArray[i];
charArray[i] ^= charArray[len];
}
return new string(charArray);
我試圖將其轉換爲C++作爲一種智力活動比什麼都重要。以下是我迄今爲止:
void main(void)
{
char* str = "testing";
char* result;
int len;
len = strlen(str);
if (len <= 12)
{
result = new char[strlen(str)];
for (int i = 0; i < len; i++, len--)
{
result[i] ^= str[len];
result[len] ^= str[i];
result[i] ^= str[len];
}
}
else{
std::reverse(str, &str[strlen(str)]);
}
cout << endl << result << endl;
// cleanup
str = NULL;
result = NULL;
}
在.NET中字符串是否< = 12(我認爲這是十二)個異比陣列反向快。 Source - Sam Saffron我基本上是想看看它是否仍然用C舉起++。
字符串出來,在一個奇怪的格式(════╣¥¿ë²²²要準確)。
任何想法?
注意:我知道else語句不工作,出來後我就明白這一點;)
注2:我可能做這完全錯了,可以隨意點絕對什麼出格
更新
感謝大家參加。我沒有在一個公平幾年與C++播放(它顯示),並認爲這將是安靜容易轉換,但顯然不是。認爲我放棄這個想法是最好的。再次感謝
這是在性能的嘗試,但你正在使用C字符串,XOR交換,堆分配,指數法,而不是迭代器和調用strlen的兩倍? – Pubby 2012-02-07 00:11:45
提示:保證在C++中的* result *緩衝區的初始內容是什麼? – 2012-02-07 00:15:52
只需添加參考源。我完全承認我不知道我在做什麼。純粹的智力鍛鍊:)我正在緩存它,但由於某種原因不使用它:/ – 2012-02-07 00:15:52