文字列を分解するには?

解決


TAKUYA  2006-08-28 18:24:43  No: 62835

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 18:30:18  No: 62836

>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 19:27:55  No: 62837

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

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


Blue  2006-08-28 19:36:54  No: 62838

>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 19:43:42  No: 62839

間違えました。
>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

でした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加