STL Vector

文字列を行で切り分けて STL の vector に格納します。

前田稔の超初心者のプログラム入門

Win10 String

  1. 入力したデータを行(改行コード)で切り分けて STL の vector<string> に格納します。
    X-FILE などを解析するとき、1行ずつ切り分けることが先決です。
    ファイルからテキストデータを入力する方法は BasicReaderWriter Class を参照して下さい。
  2. STL の vector を使うときは、ヘッダファイルと using の記述が必要です。
    #include <string>
    #include <vector>
    using namespace std;
    
  3. Button Click に "data.txt" を入力して STL の vector に格納するコードを書きます。
    BasicReaderWriter の reader->ReadData() で、"data.txt" から buf に読み込みます。
    void App1::MainPage::Button_Click_1(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
    {
        BasicReaderWriter^ reader = ref new BasicReaderWriter();
        Platform::Array<byte>^ buf = reader->ReadData("data.txt");
    
  4. "data.txt" は Shift-JIS でタイプされています。
      1,
      2,
      3,
      1.0,
      2.0,
      -3.0,
      1.0;2.0;3.0;,
     -1.0;2.1;-3.2;,
    
  5. vector<string> の領域と、buf を行で切り分けて格納するコードです。
    pw が行の始まりで、pt が改行コード(0x0A)の位置です。
    pt に文字列の終端を示す 0x00 を格納して、pw の位置から v に push_back します。
        vector<string> v;
        int pt,pw,num;
    
        num= buf->Length;
        for(pt=0; pt<num; )
        {   pw= pt;
            for(pt++; buf->Data[pt]!=0x0A; pt++);
            if (pt>=num)    break;
            buf->Data[pt]= 0x00;
            v.push_back((char *)buf->Data+pw);
            pt++;
        }
    
  6. 行で切り分けた vector<string> v; を確認します。
    Debug() 関数は、前回に説明しています。
        num= v.size();
        for(int i=0; i<num; i++)
            Debug((char *)v[i].data(), v[i].length());
    }
    
  7. これで X-FILE を解析する準備は整いました。
    X-FILE のローダーは X Model 2019 に掲載しています。

超初心者のプログラム入門(C/C++)