我认为这很简单,但我无法让它发挥作用。
我只是想将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并返回?
感谢您的时间。
答案 0 :(得分:35)
无需恢复为C api(atoi
)或非可移植API(_wtoi
)或复杂解决方案(wstringstream
),因为已经有简单的标准API要做这种转换:std::stoi
和std::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。