C++ cli 如何重新排列字符串中的字符?

C++ cli 如何重新排列字符串中的字符?,c++-cli,C++ Cli,下面是工作正常的代码: 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.sub

下面是工作正常的代码:

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中实现的


谢谢。

乍一看,为什么不呢

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

或者,使用生煤焦可能更有效

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);

工作很好,我以前从未使用过substr,所以这个工作很好!谢谢我会在5分钟内做出回答…@Andrew:说什么“不起作用”通常是没有用的。要么它给出一个编译错误(在哪种情况下,哪个?),要么它给出一个运行时错误(在哪种情况下,哪个?),要么它做了一些与您期望的不同的事情(在哪种情况下,它做了什么?),或者它什么都不做(在哪种情况下,这么说)。我假设sCharacterUid是一个字符串?@idefixs,2个错误,错误C2440:“正在初始化”:无法从“std::string”转换为“System::string^”,错误C2228:“.substr”的左侧必须具有类/结构/union@karlphillip:是和否:是的。你为什么不试一下你问的另外两个类似问题中的建议-?我试过了,而且是为了别的什么,效果很好。@ruakh Ok,我更新了问题的标签以反映主题。
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);
std::string & S = sCharacterUid;
S = S.substr (4, 2) + " " + S.substr (2, 2) + " " + S.substr (0, 2);