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
对于编译器来说是跨平台的。它将在所有平台上编译,并为平台生成正确的输出。但输出并不是真正跨平台的,因为文本中的新行在不同的平台上是不同的。因此,阅读需要额外的处理才能独立于平台