我正在编写一个将wchar_t
数组转换为long integer
值的函数(该函数忽略空格 beetwen 数字)。看我的代码:
long wchartol(wchar_t *strArray, long retVal = 0) {
wchar_t *firstArray = strArray;
long pow;
int count, i;
count = 0;
i = 0;
pow = 1;
while(*firstArray != L'\0') {
//firstArray++;
if(*firstArray++ == L' ')continue;
count++;
}
firstArray--;
while(i < count) {
if(*firstArray != L' ') {
retVal += (*firstArray - L'0') * pow;
pow*=10;
i++;
}
firstArray--;
}
return retVal;
}
我还有一个有趣的问题:当我从某个文件复制数字数据(它包含空格)并将其粘贴到函数的参数中时,我得到了函数返回的错误数据;但是当我用键盘输入的空格替换这些空格时,一切都很好。什么原因?我以这种方式调用该函数:
std::wcout << wchartol(L"30 237 740") << std::endl;
读取使用outputstream.imbue(std::locale::global(std::locale("")));
Maybe编写的文件是原因吗?