C / Objective-C で文字列リテラルを複数行に分割するにはどうすればよいでしょうか? 質問する

C / Objective-C で文字列リテラルを複数行に分割するにはどうすればよいでしょうか? 質問する

かなり長い sqlite クエリがあります:

const char *sql_query = "SELECT statuses.word_id FROM lang1_words, statuses WHERE statuses.word_id = lang1_words.word_id ORDER BY lang1_words.word ASC";

読みやすくするために、複数の行に分割するにはどうすればよいでしょうか? 次のようにします。

const char *sql_query = "SELECT word_id
                        FROM table1, table2
                        WHERE table2.word_id = table1.word_id
                        ORDER BY table1.word ASC";

エラーが発生しています。

クエリを複数行で記述する方法はありますか?

ベストアンサー1

文字列を複数行に分割する方法は 2 つあります。

  1. 各文字列はそれぞれ別の行にあります。文字列でのみ機能します:

    • プレーンC:

      char *my_string = "Line 1 "
                        "Line 2";
      
    • 目的:

      NSString *my_string = @"Line1 "
                             "Line2";    // the second @ is optional
      
  2. -を使用すると\、任意の式に使用できます。

    • プレーンC:

      char *my_string = "Line 1 \
                         Line 2";
      
    • 目的:

      NSString *my_string = @"Line1 \
                              Line2";
      

最初のアプローチの方が、空白文字があまり含まれていないので優れています。ただし、SQL クエリの場合は、どちらも可能です。

注: を使用する場合、 2 つの文字列を連結するには#defineを追加する必要があります。\

プレーンC:

#define kMyString "Line 1"\
                  "Line 2"

おすすめ記事