ページ 11

[C++] arrayクラスのデータを構造体にコピーする方法

Posted: 2015年7月15日(水) 11:27
by fkfk
CSVファイルを読み込み、その中にあるデータをarray配列に一度代入しています。
そのarray配列の値を、他でも使用する際に分かりやすくするため、
Public定義した構造体にコピーしたいと考えていますが、どのようにすればよいかわかりません。
何かアドバイスいただけないでしょうか?よろしくお願いいたします。

コード:

 
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: ここにコンストラクタ コードを追加します
			//
		}

		ref class readsetting{
			String ^param1;
			String ^param2;
			int ^param3;
			int ^param4;
			String ^param5;
			String ^param6;
		}READSETTING, ^LPREADSETTING;
		
		//中略
		
			// アプリケーション実行フォルダを捜索
			String ^s_app_path = System::IO::Directory::GetCurrentDirectory();

			//行ごとのデータに分割してCSVファイルを読み込む
			array<String^>^ RowData = System::IO::File::ReadAllLines(s_app_path + "/" + s_SetCsv);

			//全データ格納用の配列を確保(配列の配列)
			array<array<String^>^>^ CSVData = gcnew array<array<String^>^>(RowData->Length);
				 
			for (int i = 0; i < RowData->Length; i++){
				//行のデータをカンマで区切って配列に分割する。
				CSVData[i] = RowData[i]->Split(',');
			}
			
			// ここでCSVData の内容を READSETTING に渡したい

Re: [C++] arrayクラスのデータを構造体にコピーする方法

Posted: 2015年7月15日(水) 13:15
by みけCAT
オフトピック
fkfk さんが書きました:何かアドバイスいただけないでしょうか?よろしくお願いいたします。
C++/CLIのコード(?)をC++と騙るのは、誤解を招くかもしれないと思います。
私は印象を悪くしました。
fkfk さんが書きました:ここでCSVData の内容を READSETTING に渡したい
予想ですが、構造体の型に直接データを格納することはできないのではないでしょうか?
代わりにREADSETTING型のデータを格納するarray配列を宣言/定義し、そこにデータを適切に変換して格納するといいかもしれません。
数字と文字列を相互変換する | ITLAB51.COM

Re: [C++] arrayクラスのデータを構造体にコピーする方法

Posted: 2015年7月15日(水) 17:40
by fkfk
みけCAT さんが書きました:
オフトピック
fkfk さんが書きました:何かアドバイスいただけないでしょうか?よろしくお願いいたします。
C++/CLIのコード(?)をC++と騙るのは、誤解を招くかもしれないと思います。
私は印象を悪くしました。
fkfk さんが書きました:ここでCSVData の内容を READSETTING に渡したい
予想ですが、構造体の型に直接データを格納することはできないのではないでしょうか?
代わりにREADSETTING型のデータを格納するarray配列を宣言/定義し、そこにデータを適切に変換して格納するといいかもしれません。
数字と文字列を相互変換する | ITLAB51.COM

返信ありがとうございます。
また、よくわかっておらず、申し訳ありません。C++として理解していました。
以後、書いている言語を理解して、質問したいと思います。

>代わりにREADSETTING型のデータを格納するarray配列を宣言/定義し、そこにデータを適切に変換して格納するといいかもしれません。

READSETTING構造体が複数できてしまうので、ちょっとイメージとは違っているのかと思います。
現在Stringで取得しているものを都度変更するか、1つずつ指定して格納するように検討したいと思います。

Re: [C++] arrayクラスのデータを構造体にコピーする方法

Posted: 2015年7月15日(水) 20:00
by softya(ソフト屋)
毎回C++/CLIだと水を指すような事を書いておりますが、C++/CLIで.NET FrameWorkを利用してGUIを作成することはマイクロソフトとしてはVC++2012以降は非推奨の物となります。メインストリームは何と言ってもC#と.NET FrameWorkです。
書籍を調べてもらうと分かりますが、VC++2010を最後にC++/CLIを使う入門書籍は出ていないはずです。
今後資料の少ない事で苦労するのを分かっていて突き進むのは構いませんが、もし知らなかったのであれば今のうちに方向転換をおすすめします。

「補足」
私のおすすめは、純粋なC++にしてGUI部分をQtなどに変えるか、C#に移るかです。

Re: [C++] arrayクラスのデータを構造体にコピーする方法

Posted: 2015年7月21日(火) 09:19
by fkfk
CSVファイルからの読み込みは、うまくいかなかったため、
最終的にxmlを使用するクラスを作り、そこから読み込みをするようにしました。

回答いただきましてありがとうございます。

C++Cliを使用することは現状避けられないため、
本プログラム完成後は、C#でも同様の処理のものを作成してみたいと思います。