首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个wcstombs的有关问题

2012-03-16 
一个wcstombs的问题有函数如下:1stringwcstombs(constwstring&str)2{3size_tlenwcstombs(NULL,str.c_str(

一个wcstombs的问题
有函数如下:
1   string   wcstombs(const   wstring   &str)
2   {
3           size_t   len=wcstombs(NULL,   str.c_str(),   0);
4           boost::scoped_array <char>   buf(new   char[len]);
5
6           len=wcstombs(buf.get(),   str.c_str(),   len);
7           if(len==static_cast <size_t> (-1))
8                   throw   runtime_error( "wcstombs():   unable   to   convert   character ");
9
10         return   string(buf.get(),   len);
}

运行时,第二次wcstombs时(第7行)返回进为-1,程序退出,寻求帮助。谢谢。

[解决办法]
#include <iostream>
#include <string>
#include <vector>
using namespace std;

#include <math.h>

string wcstombs(const wstring &str)
{
size_t len = wcstombs(NULL, str.c_str(), 0);
vector <char> buf(len + 1);

len = wcstombs(&buf[0], str.c_str(), len);
if ( len == static_cast <size_t> (-1) )
throw runtime_error( "wcstombs(): unable to convert character ");

return string(&buf[0]);
}

int main(int argc, char *argv[])
{
//目的是取出bcde

cout < < wcstombs(L "abce ") < < endl;
return 0;
}

热点排行