Как переставить символы в строку? - PullRequest
0 голосов
/ 08 марта 2012

вот следующий код, который прекрасно работает:

sCharacterUid = "394F73";
size_t pos;
sPos1 = sCharacterUid.substr(4,1);
sPos2 = sCharacterUid.substr(5,1);
sPos3 = sCharacterUid.substr(2,1);
sPos4 = sCharacterUid.substr(3,1);
sPos5 = sCharacterUid.substr(0,1);
sPos6 = sCharacterUid.substr(1,1);
sCharacterUid = sPos1 + sPos2 + " " + sPos3 + sPos4 + " " + sPos5 + sPos6;
String^ sfCharacterUid = gcnew String(sCharacterUid.c_str());

, но мне интересно, как я могу сократить количество кода, необходимого для выполнения этой задачи.c ++ / cli.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 08 марта 2012

на первый взгляд, почему бы не

sPos1 = sCharacterUid.substr(4,2); 
sPos3 = sCharacterUid.substr(2,2);
sPos5 = sCharacterUid.substr(0,2);
sCharacterUid = sPos1 + " " + sPos3 + " " + sPos5; 

Или

string result="";
for (i=4;i>=0;i-=2)
  result += sCharacterUid.substr(i,2) + " ";

Или может быть более эффективно работать с необработанными символами.

char result=[9];
char* dest=result;
char* source = sCharacterUid.c_str();
for (i=4;i>=0;i-=2)
{
   *dest++ = source[i];
   *dest++ = source[i+1];
   *dest++ = ' ';
}
*(--dest)='\0';
String^ sfCharacterUid = gcnew String(result);
1 голос
/ 08 марта 2012
std::string & S = sCharacterUid;
S = S.substr (4, 2) + " " + S.substr (2, 2) + " " + S.substr (0, 2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...