2012-03-08 16 views
-2

はここだけで正常に動作し、次のコードです:文字列に文字を配置する方法は?

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です。

ありがとうございました。

+0

これは本当にC++ IS? – karlphillip

+0

@karlphillip:はい、いいえ:[C++/CLI](http://en.wikipedia.org/wiki/C%2B%2B/CLI)です。 – ruakh

+0

なぜあなたはあなたが尋ねた他の2つの同様の質問で提案を試しませんでしたか?[http://stackoverflow.com/questions/9612079/loop-to-keep-adding-spaces-in-string](http://stackoverflow。 com/questions/9612079/loop-to-keep-adding-spaces-in-string)? –

答えて

2

一見、なぜ

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

はうまく動作します。これまではsubstrを使用したことはありませんでした。ありがとう。 ... – Andrew

1
std::string & S = sCharacterUid; 
S = S.substr (4, 2) + " " + S.substr (2, 2) + " " + S.substr (0, 2); 
+0

が応答しません... – Andrew

+0

@Andrew:「動作しません」と言うのは一般的に有用ではありません。コンパイルエラー(どちらの場合は?)、またはランタイムエラーが発生する(どちらの場合は?)、または期待どおりの何かをします(その場合はどうなりますか?)。 、まったく何もしません(そのような場合はそうです)。 – ruakh

+0

sCharacterUidが文字列であると仮定しましたか? – idefixs

関連する問題