一个指针的两行字符串

22 浏览
0 Comments

一个指针的两行字符串

可能重复:
\n如何在C / Objective-C中将字符串文字拆分为多行? \n有时我必须使用char变量指向的多个SQL语句进行编写,例如:\n

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);"; 

\n但是它非常长,我该如何将其分成两行?

0
0 Comments

(Two lines string for one pointer)问题的出现原因是在C++中,如果想要将多个字符串连接成一个字符串并赋值给一个指针,有两种方法可以实现。然而,在使用第一种方法时,如果直接将多个字符串写在一起,代码会报错。这是因为C++编译器无法将多个字符串直接连接在一起并赋值给一个指针。而在第二种方法中,通过在每一行的末尾添加一个以反斜杠(\)开头的换行符(\n),可以将多个字符串连接在一起并赋值给一个指针。

为了解决这个问题,可以使用上述提到的两种方法之一。第一种方法是将多个字符串写在一起,然后在每个字符串之间添加一个换行符(\n)。这样,C++编译器会将它们连接在一起,并将整个字符串赋值给指针。第二种方法是在每一行的末尾添加一个以反斜杠(\)开头的换行符(\n),这样C++编译器会将多个字符串连接在一起,并将整个字符串赋值给指针。

需要注意的是,在第二种方法中,第二行字符串之前的空格将会被包含在最终的字符串中。因此,在使用第二种方法时,需要注意控制字符串之间的空格,以确保最终的字符串符合预期。

为了将多个字符串连接成一个字符串并赋值给一个指针,在C++中可以使用两种方法:一种是将多个字符串写在一起并在每个字符串之间添加换行符(\n),另一种是在每一行的末尾添加以反斜杠(\)开头的换行符(\n)。然而,在使用第二种方法时,需要注意控制字符串之间的空格,以确保最终的字符串符合预期。

0
0 Comments

(Two lines string for one pointer)问题的出现原因是在定义字符串时,将一个长字符串分成了多行赋值给一个指针,导致指针指向的字符串不完整。解决方法是将长字符串写在一行中或使用字符串拼接的方式将多行字符串连接起来。

原因:

在上述代码中,定义了一个字符串指针sql,并将多个字符串分行赋值给了该指针。然而,由于每行字符串之间没有使用任何连接符号,导致编译器将这些字符串视为独立的字符串而不是完整的一个字符串。因此,指针指向的字符串不完整,会导致编译错误或运行时错误。

解决方法:

1. 将长字符串写在一行中:

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);";

以上两种方法都可以解决(Two lines string for one pointer)问题,确保指针指向的字符串完整无误,避免编译或运行时错误。

0
0 Comments

问题的出现原因是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);"
};

通过使用指针数组,可以确保指针指向的字符串完整。这样,就可以正确地使用指针来处理这个字符串数组了。

0