【问题标题】:Two lines string for one pointer [duplicate]一个指针的两行字符串[重复]
【发布时间】:2012-10-13 10:33:36
【问题描述】:

可能重复:
How to split a string literal across multiple lines in C / Objective-C?

有时我必须编写几个由 char 变量指向的 SQL 语句,例如:

const char* sql="CREATE TABLE GenInf ( EmpName TEXT NOT NULL, Pyrll TEXT PRIMARY KEY,  DtBrth TEXT,  PlBrth TEXT, CID TEXT,  ContNo  TEXT,   JnDt TEXT,   Postn TEXT, Dept TEXT, AnnLv TEXT, EmrgLv TEXT, Irr TEXT, HmTwn TEXT, F1 TEXT, F2 TEXT ); CREATE TABLE Training( Pyrll TEXT NOT NULL, Crs TEXT, Dt TEXT, Plc TEXT, Cst TEXT);"; 

但是很长,怎么写成两行呢?

【问题讨论】:

    标签: c++ sql c sqlite


    【解决方案1】:

    C 和 C++ 中的字符串文字可以并排放置,因此这与您的代码完全相同

    const char* sql="CREATE TABLE "
        "GenInf ( EmpName TEXT NOT NULL, Pyrll TEXT PRIMARY KEY,  "
        "DtBrth TEXT,  PlBrth TEXT, CID TEXT,  ContNo  TEXT,   "
        "JnDt TEXT,   Postn TEXT, Dept TEXT, AnnLv TEXT, "
        "EmrgLv TEXT, Irr TEXT, HmTwn TEXT, F1 TEXT, F2 TEXT ); "
        "CREATE TABLE Training( Pyrll TEXT NOT NULL, Crs TEXT, "
        "Dt TEXT, Plc TEXT, Cst TEXT);";
    

    我更喜欢 \ 解决方案,因为换行符处的空格更容易看到,并且您可以随意缩进。

    【讨论】:

      【解决方案2】:

      你可以这样写:

      const char * sql =
          "CREATE TABLE GenInf ( EmpName TEXT NOT NULL, Pyrll TEXT PRIMARY KEY,"
          "DtBrth TEXT,  PlBrth TEXT, CID TEXT,  ContNo  TEXT,   JnDt TEXT,   " 
          "Postn TEXT, Dept TEXT, AnnLv TEXT, EmrgLv TEXT, Irr TEXT, HmTwn TEXT, "
          "F1 TEXT, F2 TEXT ); "
          "CREATE TABLE Training( Pyrll TEXT NOT NULL, Crs TEXT, Dt TEXT, Plc "
          "TEXT, Cst TEXT);";
      

      【讨论】:

        【解决方案3】:

        有两种方式:

        1) 只需编写多个字符串,C++ 将它们链接为一个字符串:

        char* c =
            "1234567890"
            "ABCDEFGHIJK";
        assert( strcmp(c, "1234567890ABCDEFGHIJK") == 0 );
        

        2) 以\ 结束每一行,后跟\n

        char* c = "0123456789\
        ABCDEFGHIJK";
        assert( strcmp(c, "1234567890ABCDEFGHIJK") == 0 );
        

        请注意,在第二种情况下,第二行之前的空格将被合并到字符串中!

        【讨论】:

          猜你喜欢
          • 2021-03-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-03
          • 2016-10-21
          • 1970-01-01
          • 2012-03-26
          • 1970-01-01
          相关资源
          最近更新 更多