今天遇到了一个奇怪的现象。先看一下代码:
#include <iostream>
#include <string>
using namespace std;
int main() {
char str[128];
cin.getline(str,128);
string s(str);
cout<<"s size:"<<s.size()<<endl;
return 0;
}
如果输入"123",输出会是多少?
经测试,程序经VS 2008编译后会输出3,而cygwin 下的g++编译后会输出4
分别在不同的环境下调试,发现,VS2008接收到的字符串是"123",而cygwin g++接收到的字符串是"123/r"。
原来是因为Windows和Linux对回车的行为不同造成的。
Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”。