我正在寫一個C++函數來使用TinyXML生成XML。我想驗證由我的函數生成的(相對較小的)樹變成與參考字符串相同的字符串。在C++中用引號括起來的硬編碼字符串比較
// intended XML:
<element type="correct" />
好像要做到這一點比較簡單的方法是參考串硬編碼到代碼:
//assignment
std::string intended = "<element type=\"correct\" />";
然而,爲了躲避引號反斜線防止後續的比較。
#include <tinyxml.h>
#include <string.h>
TiXmlElement test = TiXmlElement("element");
test.SetAttribute("type", "correct");
TiXmlPrinter printer;
test.Accept(&printer);
ASSERT_EQ(intended, printer.CStr()); // gtests macro
輸出:
Value of: printer.CStr()
Actual: "<element type="correct" />"
Expected: intended
Which is: "<element type=\"correct\" />"
反斜槓不會成爲您在此處顯示的代碼的字符串的一部分。還有其他一些事情正在發生。 http://ideone.com/3H9PB7 –
@tasteslikelemons你可以嘗試'printf()'(或類似的東西)'printer.CStr()'的值到另一個變量(或流)中,看它是否得到正確格式化以符合您的測試案例。 –
也許字符串的編碼方式不同。嘗試輸出這兩個字符串(即使用std :: cout),以便您可以準確查看'printer.CStr()'和'intended'的外觀。 – pqvst