Nie mylić z jak podzielić ciąg parsowania mądry, np:
Split a string in C++?Dzielenie C++ Struny się w wielokrotne linie (Kod składni Nie analizowaniem)
Jestem nieco mylić, jak podzielić ciąg na wiele linii w C++.
Brzmi to jak proste pytanie, ale przyjąć następujący przykład:
#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;
}
Zdaję sobie sprawę, że mogę użyć metody std::string
append()
, ale zastanawiałem się, czy jest jakaś krótsza/bardziej elegancki (np więcej pythonopodobne, choć oczywiście potrójne cytaty itp. nie są obsługiwane w języku C++), sposób łamania łańcuchów w C++ na wiele linii w celu zapewnienia czytelności.
Jednym z miejsc, w którym byłoby to szczególnie pożądane, jest przekazywanie długich literałów do funkcji (na przykład zdania).
Oto ciekawa ciekawostka: Lider w C++ nie dba o to, ile cytatów umieszczasz przed i po ciągu znaków z tylko dwoma wyjątkami. Liczba używanych cudzysłowów musi być nieparzysta i muszą one pasować po obu stronach. '" "" "" To jest poprawny łańcuch i zostanie sparsowany "" "" ". Jednak nie ma specjalnych właściwości nadanych tym ciągom znaków, one po prostu zachowują się jak pojedyncze cytaty. –
Ciekawe dzięki za udostępnienie, że ... Czy jest jakiś przydatny cel? Możesz użyć tego jako subtelnego tagu dla różnych grup ciągów w kodzie do zewnętrznego analizowania przez skrypty perl/bash/python. To wszystko, o czym teraz myślę. :) –
@ThomasAnthony To się właśnie dzieje, ponieważ traktuje cytaty na końcu jako grupę pustych ciągów i łączy je razem - to nie jest funkcja, to standardowe zachowanie C/C++ – texasflood