存储播放列表遇到的问题

想做个播放器关闭之后自动存储播放列表,下次再自己打开这个播放列表的功能,小小的一个功能,遇到了好多问题。。。

环境VC2008,win32SDK,用MCI播放,unicode编码

1、存到文本文件里的中文全是问号

原因:内码问题

解决方法:存到硬盘上之前先用一个函数把TCHAR[]格式的中文字符串转换成宽字节(char[])的字符串,然后存到文件里,读的时候再用另一个相反功能的函数转回来。

以下:

WideCharToMultiByte(936,0,Music_List[k].Path,sizeof(Music_List[k].Path),tempP,sizeof(tempP),NULL,0);

MultiByteToWideChar(936,0,temp,sizeof(temp),Music_List[k].Path,sizeof(Music_List[k].Path));

2、读出来后,明明路径是对的,就是无法播放.

原因:路径里的双斜杠//输出成了/,然后读进来时就少了一根斜杠

解决办法:

  for(int p=0;p<lstrlen(Music_List[k].Path);p++)
  {
   if(Music_List[k].Path[p]==TEXT('//'))
    Music_List[k].Path[p]=TEXT('/');
  }

3、还是不行?

原因:输出的时候一个路径占一行,用fgets读进来的时候连带读了一个换行符加在后面

解决办法:读进来的时候去掉最后一个字符

lstrcpyn(Music_List[k].Path,Music_List[k].Path,lstrlen(Music_List[k].Path));

OK了

猜你喜欢

转载自blog.csdn.net/yellowcath/article/details/6243463