c++文件读取和字符串打印
C++ file reading and string printing
为什么这两个打印的东西不一样?第一个打印abcd,但第二个打印x61x62x63x64。我需要做些什么才能使文件中的这一行被读取为abcd?
std::string line("x61x62x63x64");
ifstream myfile ("myfile.txt"); //<-- the file contains x61x62x63x64
std::string line_file;
getline(myfile,line_file);
cout << line << endl;
cout << line_file << endl;
在c++中,反斜杠是一个转义字符,可用于表示特殊字符,如换行符n
和制表符t
,或者在您的情况下,用字符串字面值中的ASCII字符的十六进制表示。如果你真的想在c++中存储一个反斜杠,你必须转义它:char c=''
。当您从文件中读取反斜杠时,它不会被视为转义字符,而是作为实际的反斜杠处理。
它与输入文件流字符解释有关:
以二进制模式打开的文件流独立于任何格式考虑执行输入和输出操作。非二进制文件被称为文本文件,而由于格式化了一些特殊字符(如换行符和回车符),可能会发生一些翻译。
文本文件流是那些打开模式中不包含ios::binary标志的文件流。这些文件被设计用来存储文本,因此所有输入或输出到它们的值都可以进行一些格式转换,这些转换不一定对应于它们的二进制值。
因此,反斜杠''
最有可能是您的ifstream
以不同的方式读取和解释文件中的字节(作为单独的char
字符)的原因,而不是包含有关其值的信息的string
,从而使其无二义性。
要进一步阅读,请参阅fstreams
的工作原理,并了解字符字面量反斜杠转义
相关文章:
- 有没有办法将字符串打印为文字?
- 如何通过标准字符串打印 ostream 变量的值?
- 这个随机字符串打印代码有什么问题?
- 比较 C++ 字符串打印中的两个整数数组
- 在C++中从后缀表达式字符串打印单个操作
- 没有得到 ASCII 编号 = 7 的字符串打印输出
- C++字符串到字符串打印不正确,无法获取 unicode 路径
- 如何从数组 c++ 中的字符串打印第 N 个字符
- 将 LPCWSTR 字符串打印到文件
- C++正在将DWORD_PTR*字符串打印到文件中
- 使用#define字符串打印f和警告
- 使用格式字符串打印类
- 如何将字符转换为字符串,并从字符串打印到main函数
- 将vector中结构体的成员字符串打印到cout流
- fprintf() / std::cout 不会将部分字符串打印到 stdout/stderr
- 为什么ostream为定义为' volatile char[] '的字符串打印' 1 ' ?
- c++文件读取和字符串打印
- 如何使用一个字符串打印此unicode行
- 按字符串打印日期
- 如何用c++将字符串打印到控制台