我在写一个将wchar_t
数组转换为long integer
值的函数(该函数忽略了空格beetwen数字)。看看我的代码:将函数从wchar_t数组转换为long int
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("")));
写的文件也许这是原因?
也许你输入的文件不包含宽字符。 (或者它会自动转换?我不这么认为......)请检查wchartol(“30 237 740”)是否返回相同的错误值,如果是这样,那显然是问题所在。此外,文件中的字符串可能包含换行符,当遇到除空格之外的任何非数字字符时(在(* firstArrax!= L'\ 0')时,应该停止处理) – SvenS
您希望L“30 237 740“返回30237740? – Spidey