Da non confondere con il modo di dividere una stringa parsing saggio, ad esempio:
Split a string in C++?Splitting C++ Strings su più righe (Codice della sintassi, non di analisi)
Sono un po 'confuso su come dividere una stringa su più righe in C++.
Questo suona come una domanda semplice, ma prendere il seguente esempio:
#include <iostream>
#include <string>
main() {
//Gives error
std::string my_val ="Hello world, this is an overly long string to have" +
" on just one line";
std::cout << "My Val is : " << my_val << std::endl;
//Gives error
std::string my_val ="Hello world, this is an overly long string to have" &
" on just one line";
std::cout << "My Val is : " << my_val << std::endl;
}
mi rendo conto che avrei potuto utilizzare il metodo std::string
append()
, ma mi chiedevo se ci fosse più breve/più elegante (ad esempio, più pythonlike, anche se ovviamente citazioni triple ecc non sono supportate in C++) modo per rompere stringhe in C++ su più righe per ragioni di leggibilità.
Un posto in cui ciò sarebbe particolarmente desiderabile è quando si sta passando lunghe stringhe a una funzione (ad esempio una frase).
Ecco un piccolo bocconcino interessante: il lexer C++ non si interessa di quante virgolette si posizionano prima e dopo una stringa con solo due eccezioni. Il numero di citazioni che usi deve essere dispari e devono corrispondere su entrambi i lati. '" "" "" Questa è una stringa valida e verrà analizzata "" "" "'. Tuttavia, non ci sono proprietà speciali dati a queste stringhe, si comportano semplicemente come virgolette singole. –
Interessante grazie per aver condiviso che ... c'è qualche scopo utile per questo? Potreste essere in grado di utilizzarlo come un tag sottile per i diversi gruppi di stringhe in un codice per l'analisi esterni dagli script perl/bash/Python. Questo è tutto ciò a cui riesco a pensare per ora. :) –
@ThomasAnthony Questo succede solo perché tratterà le virgolette intorno alla fine come un gruppo di stringhe vuote e le concatenerà insieme - non è una caratteristica, è il comportamento standard C/C++ – texasflood