我正在编写一个函数来测试从URL到查询名称格式的转换。例如;google.com";应该变成";\x6google\xcom\0"。但如果我想测试匹配度,我想我只需要做这样的事情:
// Test first that "google.com" becomes "6google3com "
EXPECT_EQ(
test_dns_querier->url_to_qname(url_test),
"x6googlex3""com\0" // Escaped
);
第一个\x6是与qname格式中的十六进制字符匹配。与\x3相同。然后在\x3之后,我需要停止并开始一个新的字符串,因为"com"中的"c"被误认为是十六进制字符。然后我使用"\"来获得一个反斜杠,最后是一个"0",但这里是它出错的地方(请参阅下面的ctest输出(。
8: Expected equality of these values:
8: test_dns_querier->url_to_qname(url_test)
8: Which is: "x6googlex3" "com "
8: "x6googlex3""com\0"
8: Which is: "x6googlex3" "com\0"
8: [ FAILED ] dns_query_tests.DemonstrateQNameURLConverision (0 ms)
出于某种原因,我的双反斜杠不起作用。当我删除一个时,它仍然会转义"\0"中的"0"。
为什么典型的"\"在这种情况下不起作用?
若要在字符串文字中嵌入零,请编写