Wiemy, że po wstawieniu \n
w strumieniu plików, do pliku zostanie zapisana odpowiednia sekwencja końca wiersza systemu (na przykład \r\n
dla systemu Windows). Czy wstawienie linii końcowej w std::stringstream
powoduje, że w łańcuchu zapisywana jest odpowiednia dla systemu sekwencja końca wiersza? Na przykład: konkretne zakończeń liniiUmieszczanie linii końcowej w strumieniu łańcuchowym
#include <sstream>
int main()
{
std::ostringstream oss;
oss << std::endl;
std::string endlineSequence = oss.str();
bool isWindows = enlineSequence == "\r\n";
bool isOldMac = endlineSequence == "\r";
bool isUnix = endlineSequence == "\n";
// Will this work???
}
Aby zaoszczędzić czas, możesz wykonać i sprawdzić, czy wszystkie 'bool's w twoim programie są 'prawdziwe' czy nie ... najprawdopodobniej' isWindows' i 'isMac' będą oceniać jako" false ". –
@Aditya: Będę musiał spróbować na każdej platformie. Nie wszyscy mają do dyspozycji system Windows, Mac i Unix. :-) –
@Eile: nie, wystarczy wypróbować to w systemie Windows. Ponieważ jeśli napiszesz '\ n' i otrzymasz' \ r \ n', zrobi tłumaczenie na natywną nową linię; a jeśli otrzymasz '\ n', to nie. Nie jest to jednak zauważalne w systemach Linux i MacOS X. –