wchar_t
配列を値に変換する関数を作成していlong integer
ます (この関数は数字の間のスペースを無視します)。私のコードを見てください:
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("")));
を使って書かれたファイルを読む