我尝试通过指针行走来反转字符串。逻辑很简单,我有两个指向char的指针if(null == salt)
generateHashFromServer(mPaymentParams);
else
generateHashFromSDK(mPaymentParams, intent.getStringExtra(PayuConstants.SALT));
指向字符串的第一个字符。另一个head
指向字符串的倒数第二个字符(在tail
之前)。然后交换char-by-char。 C风格它运作良好,但C ++风格不起作用。我不知道它的原因。
C风格
\0
C ++ - 风格
#include <iostream>
#include <cstring>
using std::cin;
using std::cout;
using std::endl;
using std::string;
void reverse(char *str)
{
char *tail, *head;
head = &str[0];
tail = &str[strlen(str)];
cout << "String inverted is: ";
while ((head!=tail)&&(head!=--tail))
{
char temp=*head;
*head++=*tail;
*tail=temp;
}
}
int main(int argc, char const *argv[])
{
char str[100];
cout << "Enter a string: ";
cin.getline(str,100);
reverse(str);
cout << str;
cout <<"\n";
return 0;
}
答案 0 :(得分:4)
您没有通过引用将字符串传递给reverse
。
您当前正在传递该字符串的副本。
make reverse
有这个原型:
void reverse(string& str)