确定环境的换行符 C++程序正在编译
在 C++ 中如何确定环境换行符1? Google 为 C# 和 .NET 提供了许多结果,但我没有看到任何方法可以为非 CLI C++ 做到这一点。
附加信息:我需要扫描 const char*
中的字符。
1“环境换行符”是指 Windows 上的 \r\n
、Linux 上的 \n
和 \r
> 在 Mac 上。
How does one determine the environment newline1 in C++? Google yields many results for C# and .NET but I didn't see any way to do it for non-CLI C++.
Additional info: I need to scan a const char*
for the character(s).
1By "environment newline" I mean \r\n
on Windows, \n
on Linux, and \r
on Mac.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
std::endl
插入适合系统的换行符。您可以使用ostringstream
在运行时将换行符序列确定为字符串。编辑: * 请参阅下面的评论,了解为什么这可能不起作用。
如果您知道您的平台仅限于 Windows、Mac 和 Unix,那么您可以使用预定义的编译器宏(此处列出< /a>) 在编译时确定结束行序列:
大多数非 Windows 和非 Apple 平台都是某种使用
\n
的 Unix 变体,因此上述宏应该在许多平台上工作。唉,我不知道有什么可移植的方法可以在编译时为所有可能的平台确定结束行序列。std::endl
inserts a newline appropriate for the system. You can use aostringstream
to determine the newline sequence as a string at runtime.EDIT: * See comments below on why this probably won't work.
If you know that your platforms will be limited to Windows, Mac, and Unix, then you can use predefined compiler macros (listed here) to determine the endline sequence at compile-time:
Most non-Windows and non-Apple platforms are some kind of Unix variant that uses
\n
, so the above macros should work on many platforms. Alas, I don't know of any portable way to determine the endline sequence at compile time for all possible platforms.对于 C++(和 C)中的格式化文本 IO,换行符始终为
'\n'
。如果您想知道给定平台和文件模式下新行的二进制表示形式,请以所需模式(例如文本或二进制、UTF-8、UTF-16、MCBS 等)打开文件,写出'\n'
,关闭它,以二进制方式重新打开它,读入整个文件,并找出'\n'
的实际二进制编码是什么。您可能还必须考虑文件结束
字符。For formatted text IO in C++ (and C), the new line character is always
'\n'
. If you want to know the binary representation of a new line for a given platform and file mode, open a file in the desired mode (e.g., text or binary, UTF-8, UTF-16, MCBS, etc.), write out'\n'
, close it, reopen it in binary, read in the entire file, and figure out what the actual binary encoding of'\n'
. You may also have to account for theend-of-file
character as well.一般用#define。但是,对于简单的应用程序,以“文本模式”打开文件将为您提供所需的内容。
Generally with a #define. But, for simple applications, opening a file in "text mode" will give you what you need.