我已经告诉别人,编写using namespace std;代码是错误的,我应该用std::cout和std::cin直接代替.
为什么被using namespace std;认为是不好的做法?是低效还是冒着声明模糊变量(与名称std空间中的函数具有相同名称的变量)的风险?它会影响性能吗?
假设我必须读取一个包含一堆浮点数的文件.这些数字可以像1e+10,5,-0.15等等,即任何通用的浮点数字,用小数点(这是固定的!).但是,我的代码是另一个应用程序的插件,我无法控制当前的区域设置.例如,它可能是俄语,并且LC_NUMERIC规则要求使用小数逗号.因此,Pi预计拼写为"3,1415 ......",并且
sscanf("3.14", "%f", &x);
Run Code Online (Sandbox Code Playgroud)
返回"1",x包含"3.0",因为它拒绝解析过去的'.' 在字符串中.
我需要忽略这些数字解析任务的语言环境.
怎么做到这一点?
我可以写一个parseFloat函数,但这似乎是浪费.
我还可以保存当前的语言环境,将其暂时重置为"C",读取文件,然后恢复到保存的文件.这有什么性能影响?在某些操作系统/ libc组合中,setlocale()可能会非常慢,它在幕后真的做了什么?
另一种方式是使用iostreams,但他们的表现并不是很好.
所以我很困惑.在这种情况下你们做了什么?
干杯!