wstring查找小数点位置,某些情况找不到返回-1. 是什么原因呢?

需要从编辑框中输入的字符串提取数字(double类型),然后对数字进行一些操作, 再转换回wstring类型,在编辑框中显示。
把double转为wstring后因为只想显示小数点后两位, 所以采用了查找“.”的位置, 然后对输出的wstring进行相应数量的popback。
当小数点位于wstring的前两个位置的时候, find返回-1,也就是没有找到。而其他情况都能正常的返回小数点位置。 实在是没有找到是哪里的位置。
希望给点建议!

std::wstring wst_tf = std::to_wstring(tf);
int pos = wst_tf.find(L".", sizeof(wchar_t));

比如说tf=15.5, 那么pos返回2, 没有问题。
但是当tf=0.5,则返回-1。

这是什么原因呢?

检查 find() 方法是否正确调用

稀里糊涂吧第二个参数sizeof(wchar_t)去掉,得到正确的结果。查看了一个封装的find方法,第二个参数表示开始的位置是 beginning at or after (第二个参数),但是什么时候是at什么时候是after, 我在函数中也没有找到, 可能还要翻函数中引用的更多函数的定义。 懒得整了, 处理了问题就好。

仅供参考:

#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
    p=s;
    while (1) {
        k=sscanf(p,"%d%n",&v,&n);
        printf("k,v,n=%d,%d,%d\n",k,v,n);
        if (1==k) {
            p+=n;
        } else if (0==k) {
            printf("skip char[%c]\n",p[0]);
            p++;
        } else {//EOF==k
            break;
        }
    }
    printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.