将std :: wstring转换为int

时间:2014-04-19 02:43:28

标签: c++ c++11

我认为这很简单,但我无法让它发挥作用。

我只是想将std :: wstring转换为int。

到目前为止,我尝试了两种方法。

第一种是将“C”方法与“atoi”一起使用,如下所示:

int ConvertedInteger = atoi(OrigWString.c_str());

然而,VC ++ 2013告诉我:

错误,“const wchar_t *”类型的参数与“const char_t *”类型的参数不兼容

所以我的第二种方法是使用Google搜索:

std::wistringstream win(L"10");
            int ConvertedInteger;
            if (win >> ConvertedInteger && win.eof())
            {
                // The eof ensures all stream was processed and
                // prevents acccepting "10abc" as valid ints.
            }       

然而,VC ++ 2013告诉我:

“错误:不允许使用不完整的类型。”

我在这里做错了什么?

有没有更好的方法将std :: wstring转换为int并返回?

感谢您的时间。

2 个答案:

答案 0 :(得分:35)

无需恢复为C api(atoi)或非可移植API(_wtoi)或复杂解决方案(wstringstream),因为已经有简单的标准API要做这种转换:std::stoistd::to_wstring

#include <string>

std::wstring ws = L"456";
int i = std::stoi(ws); // convert to int
std::wstring ws2 = std::to_wstring(i); // and back to wstring

答案 1 :(得分:-1)

您可以使用wstring.h中的可用API。

WString转换为int尝试int ConvertedInteger = _wtoi(OrigWString);

供参考使用msdn.microsoft.com/en-us/library/aa273408(v=vs.60).aspx。