STL で stdio.h を使う

string を stdio.h の printf() 関数で印字します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. string は文字列を扱う Object Class のようなものです。
    string で定義された文字列を char の配列として参照するときは begin() メンバー関数を使います。
  2. 空の Console Application を作成して、次のファイルをプロジェクトに加えて下さい。
    <conio.h> と getch() は表示を確認するために追加したコードです。
        #include <stdio.h>
        #include <conio.h>
        #include <string>
    
        char    str_data[][20]=
        { "0123456789", "ABCDEFGHIJKLMN" };
    
        int main()
        {
            using namespace std;
            string  s1,s2;
    
            s1= str_data[0];
            s2= str_data[1];
            printf("1番目の文字列は: %s\n",s1.begin());
            printf("2番目の文字列は: %s\n",s2.begin());
            getch();
            return 0;
        }
        

【メモ】

s1.begin() 関数は、ストリング(char*)を返してくれるはずなのですが、バージョンによってはエラーが表示されることがあります。 (^_^;)
そのときは次の方法を使って下さい。
  1. c_str() メンバー関数で文字列の先頭アドレスを取得する方法。
    printf("1番目の文字列は: %s\n",s1.c_str());
  2. data() メンバー関数で文字列を直接取得する方法。
    printf("1番目の文字列は: %s\n",s1.data());
  3. 文字列の先頭に&を付けて参照する方法。
    printf("1番目の文字列は: %s\n",&s1[0]);
  4. ただし、string の領域が必ずしも連続しているとは限らないことと、文字列の終端を示す「¥0」が格納されている保障が無いことに留意しておいて下さい。
    私が試した限りでは現在の所支障は無いようです。 (^_^;)

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