1

私の仕事は、ボタンをクリックした後に複数のファイルを開き、選択したすべてのファイルを読み取ることです。

c#でforeach関数の例を見つけましたが、C++で書きたいと思います。実際にそれを変換するにはどうすればよいですか?

System::Stringトップレベルの '^' がなければ、ここではこのタイプを使用できないというエラーが表示されます。

私はまだそれで新しいです。誰でも提案できますか?

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

以下は私の書かれたコードです

Stream^ myStream;
OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;

openFileDialog1->InitialDirectory = "c:\\";
openFileDialog1->Title = "open captured file";
openFileDialog1->Filter = "CP files (*.cp)|*.cp|All files (*.*)|*.*|txt files (*.txt)|*.txt";
openFileDialog1->FilterIndex = 2;
//openFileDialog1->RestoreDirectory = true;
openFileDialog1->Multiselect = true;

if ( openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK )
{
    **for each (String line in openFileDialog1->FileName)** 
         System::Diagnostics::Debug::WriteLine("{0}",line);
    myStream->Close();
}
4

1 に答える 1

0

返されたコンテナ タイプに応じて、 in -headerがstd::for_each定義されています。<algorithm>関数は次のようになります。

#include <algorithm>

std::for_each(InputIterator first, InputIterator last, Function fn);

2 つのを指定する必要があります。1 つiteratorsはコンテナの開始用、もう 1 つはイテレータの終了用です。3 番目の引数として、関数 (関数オブジェクト) を指定し、現在の引数を操作できます。

詳細については、こちらを参照してください。

MSDNから取得したので、プロパティSafeFileNamesarray<String^>.

System::Arrayと呼ばれる静的メソッドを提供しますArray::ForEach。次のように呼び出す必要があります

System::Action<T> myAction; // You will Need to provide a function here to be used on every filename.
System::Array::ForEach(openFileDialog1->SafeFileNames, myAction);

foreachこれはC#に最も近いものです。

についてはこちらを、についてはこちらご覧ください。System::Array::ForEachOpenFileDialog::SafeFileNames

于 2013-03-21T20:01:36.893 に答える