2009-06-09 71 views
21

Necesito asegurarme de que ninguna de las líneas en mi código exceda una cierta longitud.¿Cómo dividir largas líneas de código en C++?

Normalmente separo las líneas donde hay una coma u otra ruptura adecuada.

¿Cómo puedo separar esta línea en 2?

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

Si simplemente presiono enter en algún lugar en el medio, no funciona.

Respuesta

36

Dos opciones:

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

El segundo es más eficiente.

+10

Una explicación del segundo caso sería útil: ANSI C permite concatenar literales de cadena, como en "foo" "barra" "baz" sería lo mismo que "foobarbaz" – Hasturkun

+7

Concatenado por el compilador, no durante el tiempo de ejecución. –

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 recomendación fuerte para evitar las variantes con una barra invertida al final de la línea. No aprovechó la oportunidad para mostrar los símbolos de inicio y fin de los comentarios divididos en varias líneas mediante combinaciones de barra invertida y línea nueva. : D –

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

Esto funcionará en todo el C++, tiempo que es VS, o en Linux

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

Está incorporando pestañas o espacios adicionales en la cadena. no es una buena idea. – Hasturkun

7

Sólo mi 2 sacudidas por valor ...

no envolvería esa línea de código. Lo dejaría como una larga cadena larga.

La convención de 80 caracteres se basó en las limitaciones de la maquinaria del día. Terminales donde generalmente es de 80 por 32 caracteres. Las impresoras de matriz de puntos baratas + papel de hoja continua tenían 80 caracteres. Solo los ricos podían permitirse una configuración de 132 caracteres. Y adivinen qué ... aquellos que podían permitírselo ajustaban el código a 132 caracteres, lo que reduce drásticamente el número de líneas que deben envolverse y produce un código fuente "más limpio".

Esas limitaciones no se aplican en la actualidad. Mi editor de texto muestra 150 columnas por 52 líneas de 10 pt de mensajería nuevas. Mis monitores de trabajo mostrarían algo así como 400 por 65 (nunca lo he probado). No he impreso una sola línea de código fuente en años ... y la última vez que lo hice fue para poder leerlo en el autobús en el camino a casa, cuando mi computadora portátil estaba ralentizada.

Las langues modernas son mucho más prolijas que las lenguas de "estilo antiguo" ... y esto es bueno. Si llamó a algo como BeanContextServicesSupport.BCSSServiceProvider en Pascal, su jefe le habría dicho que se sentara en la esquina. Los identificadores de Pascal solo tienen un máximo de 8 caracteres.

¿Por qué persistir con esta anticuada y (para mí) convención molesta? Tiene muy poco sentido práctico.

Así que ... Envuelvo "líneas de código" a 132 caracteres. No me molesto en envolver las "líneas de texto".

Consulte también: The width of two horses arses!

Saludos. Keith.

+12

El límite de 80 caracteres tiene raíces históricas, pero se mantiene principalmente porque el ojo humano es mejor para realizar un seguimiento de las líneas cortas. – bayer

+0

@bayer es correcto, pero aplicar la capa de presentación para un solo dispositivo de salida es una solución más pobre que permitir que los dispositivos de salida determinen una longitud de línea basada. – mikemaccana

+0

Por cierto, la historia de "dos caballos culos" es un mito (aunque bastante divertido) - ver por ejemplo https://www.snopes.com/history/american/gauge.asp; o simplemente considere que los indicadores del ferrocarril varían ampliamente (¡consulte el sistema del metro de Boston!) – TextGeek

Cuestiones relacionadas