读书人

一个wcstombs的有关问题

发布时间: 2012-03-16 16:34:56 作者: rapoo

一个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;
}

读书人网 >C++

热点推荐