Als Teil meiner Unit -Tests habe ich ein Verzeichnis, das Testdaten enthält. Beispielsweise enthält einer der einfachsten Tests die folgende Datei, in der eine Eingabe für den Test angegeben ist. < /P>
Code: Select all
POST /api/example HTTP/1.1
Host: example.com
Content-Type: application/json
{
"body": "BODY"
}
< /code>
Dies ist ein Satz von HTTP -Headern und ein JSON -Inhaltskörper, der als Eingabe verwendet werden soll, um die Analyselogik zu testen. Daher sind die Zeilenende \ n
Dies ist mit HTTP nicht kompatibel, da der Standard \ r \ n erfordert. (Wagenrendite, gefolgt von einer neuen Zeile.) < /P>
Ich suche nach Ratschlägen, wie ich hier am besten vorgehen kann. Denken Sie an eine elegante Implementierung. Dies fühlt sich ein bisschen wie ein Codegeruch an, vielleicht ist dies nicht der beste Ansatz. Wenn jemand dieselbe Datei aus einem Windows-System wiedergibt, wird die Logik unterbrochen. (Es sei denn, ich sollte etwas Komplexeres implementieren, das zuerst die Datei scannt, um das Zeilenendeformat zu erkennen.) < /Li>
< /ul>
Etwas daran, das sich nicht ganz richtig anfühlt. Vielleicht hat jemand Ratschläge zum besten Weg, um fortzufahren?std::ifstream ifile("http_data.txt", std::ios::binary);
std::string line; // input
std::ostringstream oss; // output
while(std::getline(ifile, line)) // line ending agonstic
{
oss.write(line.c_str(), line.size());
oss.write("\r\n", 2); // line ending specific
}
< /code>
Kurz gesagt - ich glaube nicht, dass mein Ansatz besonders gut ist. Gibt es eine intelligentere Möglichkeit, dies zu tun?