C++ C++;-字符串中的跨平台换行符

C++ C++;-字符串中的跨平台换行符,c++,string,cross-platform,C++,String,Cross Platform,当需要字符串中的换行符时,我使用\n字符 int main() { string str = "Hello world\n"; } \n是否跨平台?或者我需要使用宏来调整平台的价值吗 特别是当str要写入文件或标准输出时。只要您以文本模式读取/写入文本流或文件,\n将被转换为平台的正确顺序 除了上一个答案,如果您需要在Unix中读取保存在Windows中的文件,反之亦然,您可以使用此选项: std::getline(fileName,inputStr); i

当需要字符串中的换行符时,我使用
\n
字符

 int main()
 {
     string str = "Hello world\n";
 }
\n
是否跨平台?或者我需要使用宏来调整平台的价值吗


特别是当
str
要写入文件或标准输出时。

只要您以文本模式读取/写入文本流或文件,
\n
将被转换为平台的正确顺序


除了上一个答案,如果您需要在Unix中读取保存在Windows中的文件,反之亦然,您可以使用此选项:

std::getline(fileName,inputStr);
inputStr.erase( std::remove( inputStr.begin(), inputStr.end(), '\r' ), inputStr.end() );
inputStr.erase( std::remove( inputStr.begin(), inputStr.end(), '\n' ), inputStr.end() );

它将删除所有
\r
\n

另一种说法是
\n
对于编译器来说是跨平台的。它将在所有平台上编译,并为平台生成正确的输出。但输出并不是真正跨平台的,因为文本中的新行在不同的平台上是不同的。因此,阅读需要额外的处理才能独立于平台