最近碰到了一个stringstream和char联合使用的奇怪bug, 本文不具体说这个bug.
来看看程序:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
void test(const string &s1, const string &s2)
{
cout << s1 << endl;
cout << s2 << endl;
if(s1 == s2)
{
cout << "yes" << endl;
}
else
{
cout << "no" << endl;
}
}
int main()
{
int c1 = '6';
stringstream ss1;
ss1 << c1;
char c2 = '6';
stringstream ss2;
ss2 << c2;
test(ss1.str(), ss2.str());
return 0;
}
结果:
54
6
no
呵呵, 要小心啊。 再看:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
void test(int x, int y)
{
cout << x << endl;
cout << y << endl;
if(x == y)
{
cout << "yes" << endl;
}
else
{
cout << "no" << endl;
}
}
int main()
{
stringstream ss;
ss << 2;
int c1;
ss >> c1;
char c2;
ss >> c1;
test(c1, c2);
return 0;
}
结果:
2
0
no
小心。