原始字符串文字不是完全原始的,因为它们通过编译器到达您的程序,该编译器读取和解释输入 C++ 文件。在 strcmp'ing 2 个字符串之前,您可以检查原始字符串的大小 - 它与 ^M (\x0d) 字符数的预期不同。
您可以求助于以二进制形式读取数据,例如(二进制读取/w 示例):
std::ifstream infile ("test.txt", std::ifstream::binary);
infile.seekg (0,infile.end);
long size = infile.tellg();
infile.seekg (0);
char* buffer = new char[size];
infile.read (buffer,size);
或者您可以坚持使用原始文字,但使用一些技巧 - 用文字中的其他一些字符替换所有“坏”字符,然后在使用此文字时进行反向替换,例如:
... all includes ...
std::string str = R"(hello|
)";
int main()
{
std::replace(str.begin(), str.end(), '|', '\015');
std::cout << strcmp("hello\r\n", str.data()) << std::endl;
}