• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:System.String.Splitでエラー)

System.String.Splitでエラー

このQ&Aのポイント
  • System.String.Splitメソッドを使用したプログラムでエラーが発生しています。
  • 2番目の引数を省略せずに指定した場合、エラーが発生しています。
  • 解決方法を教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

……? 1番目の引数指定を間違えているようですが…… MSDNのSplitメソッドのページには1番目の引数としてchar[]かString[]しか指定するパターンしか書かれていません(参考URL)。 int main(){ String^ s = "単語1 単語2 単語3 "; array<Char>^ sep = gcnew array<Char>{' '}; array<String^>^ result = s->Split(sep, StringSplitOptions::RemoveEmptyEntries); } としたらどうでしょうか。

参考URL:
http://msdn.microsoft.com/ja-jp/library/system.string.split(v=VS.100).aspx
fees84
質問者

お礼

http://imagingsolution.blog107.fc2.com/blog-entry-204.html 調べていた所↑のような解説を見つけたので、簡単だし良いのかと納得して使っていました。 ご指摘の通り直したところエラーなく動作しました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

> ' ', StringSplitOptions::RemoveEmptyEntries これを array<wchar_t>と解釈しようとしているように見えます。 http://msdn.microsoft.com/ja-jp/library/ms131448.aspx にある例文のようにやってみてはどうでしょう。

fees84
質問者

お礼

1番目の引数をきちんと変数にしたところ、エラーなく動作しました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • charで宣言した変数をstringへの代入で

    wchar_t cOrg[128]と宣言している変数にstringで宣言しているstrを cOrg[i] = str[i]; このように代入することはできたのですが、 char cAns[ 128 ]; このように宣言した変数の値をstrの41番目と42番目に 次のように入れようとするとエラーが出ます。 str[41]=cAns[1]; str[42]=cAns[2]; (エラー内容) \Form1.h(428): error C2664: 'System::String::String(wchar_t,int)' : 1 番目の引数を 'wchar_t [128]' から 'wchar_t' に変換できません。(新しい機能 ; ヘルプを参照) このような代入はできないのでしょうか? プログラムの詳細は下のようなものです。 wchar_t cOrg[128],*p; String^ str; String^ str2; int i; int iVal1,iVal2,iTotal = 0,iHosu; char cAns[ 128 ]; str = this->textBox1->Text; for(i=0;i<41;i++) { cOrg[i] = str[i]; } -------(中略)------------------------------------------ iHosu = ~iTotal; // 1の補数 iHosu++; // +1 iHosu = iHosu & 0x00FF; sprintf( cAns, "%s%02X%c", cOrg, iHosu, 0x22 ); str[41]=cAns[1]; str[42]=cAns[2];

  • マージ型文字列のデリミタ2文字以上のSplit関数のようなものは実現できますか?

    素人で間違っているかもしれませんが、String::Splitは wchar_tのように1文字だけしか使えないので、\r\nのような2文字以上のデリミタに対応しているperlのsplit関数みたいのを探しています。 以下のソースで※ここですの部分で、2文字以上の任意のデリミタでマージ型文字列を配列にしたいです。 .NETは覚えたてですが、Vista以降でも廃れることは無いのでしょうか? 覚えて無意味はきついので・・・ /* VC++2005でperlのようなsplit関数を実現したい 区切り文字は\r\n */ using namespace System; int main( array<String^>^ args ){ String^ str = nullptr; if (1 > args->Length ){ str = "太郎\r\n花子\\純一郎"; } else { str = args[0]; } // strマージ文字列をPerlのsplit関数のようなもので、以下のようなnamesを作成したい。 // $names = split /\r\n/ $str; <=※ここです。 array<String^> ^names = { "太郎", "花子", "純一郎" }; String^ name; for each ( name in names ) { Console::WriteLine("{0}", name); } return 0; }

  • 起動時の引数の取得方法が分からない。

    C++/CLIのFormでの開発なのですが、function(char *str)に起動時の引数を渡したいと考えたのですが、array<System::String ^>をchar型に変える方法が分からず、苦戦しております。 どうやったら良いのでしょうか? エラーは次のように出ます。 CouponPrint.cpp(22): error C2664: 'PtrToStringChars' : 1 番目の引数を 'cli::array<Type> ^' から '__const_String_handle' に変換できません。(新しい機能 ; ヘルプを参照) with [ Type=System::String ^ ] この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。 以下、そのときのソースコード int main(array<System::String ^> ^args) { // コントロールが作成される前に、Windows XP ビジュアル効果を有効にします Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); if(!args) { size_t convertedChars = 0; size_t sizeInBytes = ((args->Length + 1) * 2); const wchar_t *wch = PtrToStringChars(args); char *ch = (char *)malloc(sizeInBytes); errno_t err = 0; err = wcstombs_s(&convertedChars, ch, sizeInBytes, wch, sizeInBytes); if (err != 0) printf_s("wcstombs_s failed! \n"); function(ch); free(ch); } // メイン ウィンドウを作成して、実行します Application::Run(gcnew Form1()); return 0; }

  • stringクラスついて

    http://www.kumei.ne.jp/c_lang/cpp/cpp_62.htm この講座にある以下のコード(一部改変)を 実行しようとVisualStudio2005/WinXP環境で cppコンソールアプリケーションとして コンパイルしたところ、エラーが出てコンパイルできませんでした。 色々試行錯誤してみましたが、どうしても上手くいきません。 BorlandC/C++5.5コンパイラでは普通にコンパイルできましたが・・。 ひょっとしてMSのWin32に対応したstringクラスが他に用意されているのでしょうか? #include <iostream> #include <string> using namespace std; int main() { string s, t, u; s = "苗字"; t = "名前"; u = s + t; cout << u << endl; return 0; }

  • アンマネージドC++のDLLを使うと、wchar_t型のみビルドエラー

    アンマネージドC++のDLLを使うと、wchar_t型のみビルドエラー アンマネージドのC++(VC++6.0)で作成したDLLを、マネージドのC++(VisualStudio2008)で利用したいと考えています。 しかし、DLL中の関数のうち、wchar_t型を返す関数のみビルドが通らずにerror LNK2028が表示されます。 試しに、アンマネージドのC++プロジェクトからこのDLLを利用したところ、問題なくビルドが通りました。 何かマネージドのプロジェクトに必要な設定が抜けているのでしょうか。 (DLLは_UNICODEを指定しています。) それぞれ、以下のように記述しています。 よろしくお願いいたします。 // アンマネージドC++ (テスト用ですので、関数内の処理は正確なものではありません) class DLL_EXPORT MyClass { public: char CharTest(); wchar_t WCharTest(); }; char MyClass::CharTest() { char c = 'a'; return c; } wchar_t MyClass::WCharTest() { wchar_t wc = L'a'; return wc; } // マネージドC++ int main(array<System::String ^> ^args) { MyClass *p = new MyClass(); p->CharTest(); // OK p->WCharTest(); // ビルドエラー return 0; } // エラー内容 エラー 1 error LNK2028: 未解決のトークン (0A000008) "public: wchar_t __thiscall MyClass::WCharTest(void)" (?WCharTest@MyClass@@$$FQAE_WXZ) が関数 "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z) で参照されました。 UnManagedDLLUserFromManaged.obj UnManagedDLLUserFromManaged

  • TextFieldParserについて

    VC2008でusing namespace Microsoft::Win32;using namespace Microsoft::VisualBasic::FileIO; を追加し、TextFieldParserの使い方を利用したいでしたが、エラーになりました。 String^ csvfilename; Microsoft::VisualBasic::FileIO::TextFieldParser parser = gcnew Microsoft::VisualBasic::FileIO::TextFieldParser(csvfilename,System::Text::Encoding::GetEncoding("Shift_JIS"));ではエラーがあります。 error C2664: 'Microsoft::VisualBasic::FileIO::TextFieldParser::TextFieldParser(System::String ^)' : 1 番目の引数を 'Microsoft::VisualBasic::FileIO::TextFieldParser ^' から 'System::String ^' に変換できません。

  • [CLR]webBrowser->Navigateについて

    あるサイトのログインを実装するために次のコードを書きました。 public: void postdata(){ Uri^ siteUri = gcnew Uri( "http://www.hogehoge.net/index.php" ); array <String^,1>^strData = gcnew array <String^,1 > ( 128 ); String^strHeader; strData[0] = "id=hoge&pass=hogehoge"; strHeader = "Content-Type: application/x-www-form-urlencoded"; this->webBrowser1->Navigate(siteUri,"",strData,strHeader); } しかしコンパイルすると error C2664: 'void System::Windows::Forms::WebBrowser::Navigate(System::Uri ^,System::String ^,cli::array<Type,dimension> ^,System::String ^)' : 3 番目の引数を 'cli::array<Type,dimension> ^' から 'cli::array<Type,dimension> ^' に変換できません。 となります。一見通りそうなのですが・・・。 配列あたりが怪しそうなのですがどうも納得出来ません。 ご教授願えるとありがたいです。

  • System::String->char*変換でき

    C++/CLIでSystem::String^文字列をchar*に変換する関数を書いたのですが、256文字以上の文字列を投げて、戻値を確認してみると、255文字分しか中身が詰まっていません。元の文字列はアスキーのみです。 #include <msclr/marshal.h> using namespace msclr::interop; static char* toPtChar(const String^ Text) { String^ temp = (String^)Text; msclr::interop::marshal_context^ context = gcnew msclr::interop::marshal_context(); char* res = ((char*)(context->marshal_as<const char*>(temp))); return res; } この関数をどのように変更すれば、256文字以上変換できるでしょうか?

  • std::wstringの継承

    #include<iostream> #include<string> #include <stdlib.h> #include <locale.h> #include <boost/lexical_cast.hpp> using boost::lexical_cast; using namespace std; VisualC++2008ExpressEditionで文字や数字を簡単に扱えるクラスを今作ろうとしていて以下のように作ってみました。 class multiString:public std::wstring{ public:   multiString(const wchar_t *ws){     /* multiString class自体に代入 */   } }; しかし、このwchar_tをクラスに代入する処理として、 multiString(const wchar_t *s)std::wstring(s); とすると、「error C2082: 仮パラメータ 's' が再定義されました。」となりますし、 multiString(const wchar_t *s)*this=s; とすると、例外が発生してしまします。 wstringだったら、簡単に代入処理として出来るのですが、継承した場合はどの様に実装すればいいのでしょうか? 宜しくお願いします。

  • stringについて

    C++初心者です。 このプログラムで続行するとエラーがでます。どうしたら無事実行することが出来るのでしょうか? #include<stdio.h> #include <iostream> using namespace std; int main(void) { string str("エラー"); cout << str<< endl; } エラー 1>c:\documents and settings\****\デスクトップ\zisyu12\zisyu12\main.cpp(58) : error C2679: 二項演算子 '<<' : 型 'std::string' の右オペランドを扱う演算子が見つかりません (または変換できません)。 . . . 以下省略

このQ&Aのポイント
  • ミシンzz3-B988の布押さえホルダーが破損しました。部分的な交換は可能でしょうか?
  • お困りの方へ、ミシンzz3-B988の布押さえホルダーの破損について解決方法をご紹介します。
  • ミシンzz3-B988のトラブルでお困りの方へ。布押さえホルダーの破損による交換についてご説明します。
回答を見る

専門家に質問してみよう