Converting a std::wstring to int
c++, c++11
Solution
No need to revert to C api (`atoi`), or non portable API (`_wtoi`), or complex solution (`wstringstream`) because there are already simple, standard APIs to do this kind of conversion : `std::stoi` and `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
Problem
I presume this to be very simple but I cannot get it to work. I am simply trying to convert a std::wstring to an int. I have tried two methods so far. The first is to use the "C" method with "atoi" like so: ``` int ConvertedInteger = atoi(OrigWString.c_str()); ``` However, VC++ 2013 tells me: Error, argument of type "const wchar_t *" is incompatable with parameter of type "const char_t *" So my second method was to use this, per Google search: ``` 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. } ``` However VC++ 2013 tells me this: "Error: incomplete type not allowed." What am I doing wrong here? Is there a better way to convert a std::wstring to int and back? Thank you for your time.