2009-06-09 19 views
21

Ho bisogno di assicurarmi che nessuna delle righe nel mio codice superi una certa lunghezza.Come dividere lunghe code di codice in C++?

Normalmente separo le righe in cui è presente una virgola o un'altra pausa adeguata.

Come posso separare questa linea in 2?

cout<<"Error:This is a really long error message that exceeds the maximum permitted length.\n"; 

Se ho appena premuto invio da qualche parte nel mezzo non funziona.

risposta

36

Due opzioni:

cout << "Error:This is a really long " 
<< "error message that exceeds " 
<< "the maximum permitted length.\n"; 

O:

cout << "Error:This is a really long " 
    "error message that exceeds " 
    "the maximum permitted length.\n"; 

Il secondo è più efficiente.

+10

Una spiegazione del secondo caso sarebbe utile: ANSI C consente di concatenare i letterali stringa, come in "foo" "bar" "baz" sarebbe lo stesso di "foobarbaz" – Hasturkun

+7

Concatenato dal compilatore, non durante il runtime. –

19
cout<<"Error:This is a really long error " 
"message that exceeds the maximum permitted length.\n"; 

o

cout<<"Error:This is a really long error \ 
message that exceeds the maximum permitted length.\n"; 

o

c\ 
o\ 
u\ 
t<<"Error:This is a really long error \ 
message that exceeds the maximum permitted length.\n"; 
+3

Con una raccomandazione forte per evitare le varianti con una barra rovesciata alla fine della riga. Non hai avuto la possibilità di mostrare i simboli di inizio e fine del commento divisi su più righe da combinazioni backslash-newline. : D –

8
cout << "Error:This is a really long error message " 
    "that does not exceed the maximum permitted length.\n"; 
0

questo funzionerà su tutto il C++, resistere è VS, o su Linux

cout<<"Error:This is a really long error message that \ 
    exceeds the maximum permitted length.\n"; 
+7

Si stanno incorporando schede o spazi aggiuntivi nella stringa. non è una buona idea. – Hasturkun

7

Solo i miei 2 bob vale la pena ...

non vorrei avvolgere quella linea di codice. Lo lascerei come una grande lunga stringa.

La convenzione di 80 caratteri era basata sui limiti della macchina del giorno. Terminali in cui tipicamente 80 per 32 caratteri. Stampanti a matrice di punti a buon mercato + carta per fogli continui di 80 caratteri. Solo i ricchi potevano permettersi un setup di 132 caratteri. E indovina un po '... quelli che potrebbero permetterselo hanno un codice avvolto a 132 caratteri, che riduce drasticamente il numero di linee che devono essere avvolte e produce codice sorgente "più pulito".

Questi vincoli non si applicano oggi. Il mio editor di testo visualizza 150 colonne per 52 righe di 10pt courier new. I miei monitor di lavoro mostrerebbero qualcosa come 400 per 65 (non l'ho mai testato). Non ho stampato una sola riga di codice sorgente in anni ... e l'ultima volta che l'ho fatto è stato in modo tale da poterlo leggere sull'autobus sulla strada di casa, quando il mio portatile era in frizione.

Le lingue moderne sono molto più verbose dei linguaggi "stile vecchio" ... e questo è buono. Se hai chiamato qualcosa BeanContextServices.SSSSServiceProvider in Pascal, il tuo capo ti avrebbe detto di andare a sederti nell'angolo. Identificatori Pascal dove solo significativo a 8 caratteri!

Allora perché insistere con questa convenzione antiquata e (per me) noiosa? Ha pochissimo senso pratico.

Quindi ... avvolgo "righe di codice" a 132 caratteri. Non mi preoccupo affatto di avvolgere "righe di testo".

Consulta anche: The width of two horses arses!

Cin cin. Keith.

+12

Il limite di 80 caratteri ha radici storiche, ma è mantenuto principalmente perché l'occhio umano è più bravo a tenere traccia delle linee brevi. – bayer

+0

@bayer è corretto, ma imporre il livello di presentazione per un singolo dispositivo di output è una soluzione più scadente rispetto al consentire ai dispositivi di output di determinare una lunghezza di linea basata. – mikemaccana

+0

BTW, la storia dei "due cavalli asini" è un mito (anche se abbastanza divertente) - vedi per esempio https://www.snopes.com/history/american/gauge.asp; o considera semplicemente che i calibri ferroviari variano molto (controlla il sistema della metropolitana di Boston!) – TextGeek

Problemi correlati