文字列を分解するには?

解決


TAKUYA  2006-08-28 09:24:43  No: 62835  IP: 192.*.*.*

Windows XP  Professional Version2002 Service Pack 2
Visual C++.NET 2003を使用しております。

VC++.NET 2003で文字列を分解する関数がないか探しています。
VBでいえばMid、Left、Right関数にあたるものです。

例として"TestCase"という8文字の文字列の"Test"の4文字だけを変数に
格納したい、といったことです。

宜しくお願い致します。

編集 削除
Blue  2006-08-28 09:30:18  No: 62836  IP: 192.*.*.*

>VC++.NET 2003で
プロジェクトの種類は何でしょうか?

Windows フォームアプリケーションであれば、VBのMid、Left、Right関数は使えます。
が、いちいち参照設定しないといけないので、System::StringクラスのSubStringを使います。詳細はヘルプ(MSDN)を見てください。

MFCであれば、CStringクラスのMid、Left、Rightメソッドがつかます。

単なるC++ならば、std::stringクラスにsubstrメソッドがあります。

純粋に関数だけでやりたい場合は、strncpy、wcsncpy、_mbsncpyあたりや
sscanf、swscanfでもできそうです。

編集 削除
TAKUYA  2006-08-28 10:27:55  No: 62837  IP: 192.*.*.*

プロジェクトの種類はWindows フォームアプリケーションです。
言葉足らずで失礼致しました。
参照設定の必要がないとのことで、Substringを使用してみました。
String* a;
String* b = "TestCase";
a = b->Substring(0,4);
で"Test"の部分だけを取り出すことに成功しました。
解決しました。誠にありがとうございました。

strncpyやwcsncpyについても、いろいろと試していきたいと思います。

編集 削除
Blue  2006-08-28 10:36:54  No: 62838  IP: 192.*.*.*

>strncpyやwcsncpyについても、いろいろと試していきたいと思います。

>Windows フォームアプリケーション
の場合とても使いづらいです。(char*型(もしくはwchar_t*型)<->String*型 に変換させるのが面倒)
最初から、char型配列で持っている場合は違いますけど。
まぁ、そのは場合はString::String(SByte*, Int32, Int32)を使うと思うけど。

String コンストラクタ (SByte*, Int32, Int32)  
http://msdn2.microsoft.com/ja-jp/library/ezh7k8d5.aspx

String* a;
char b[] = "TestCase";

a = __gc new String( b, 0, 4 );


wchar_t型配列からならば、
String コンストラクタ (Char[], Int32, Int32)  
http://msdn2.microsoft.com/ja-jp/library/ms131424.aspx

編集 削除
Blue  2006-08-28 10:43:42  No: 62839  IP: 192.*.*.*

間違えました。
>wchar_t型配列からならば、
>String コンストラクタ (Char[], Int32, Int32)  
>http://msdn2.microsoft.com/ja-jp/library/ms131424.aspx
ではなく、

String コンストラクタ (Char*, Int32, Int32)  
http://msdn2.microsoft.com/ja-jp/library/ms131423.aspx

でした。

編集 削除