Blog
Konvertieren zwischen wstring und integer
Date: 2021-11-05 21:34
Wer sich an den C++-Standard hält, dem stellt sich sicher auch mal die Frage, wie die Umwandlung zwischen std::wstring und int richtig gemacht wird. Man könnte die C-API (etwa atoi) nehmen, aber wozu gibt es dann C++? Viele verwenden auch die Windows-API (etwa _wtoi), aber das ist dann wieder nicht portabel.
Den Wide-String in einen normalen String zu konvertieren und dann umzuwandeln ist recht aufwändig, ginge jedoch über wistringstream, etwa so:
#include <iostream> #include <string> #include <sstream> int main() { std::wistringstream win(L"123"); int i; if (win >> i) { std::cout << "i=" << i << std::endl; } }
Die Lösung ist ganz einfach: Es gibt in C++ eine Standard-API um das Umwandeln zu realisieren und die sollte auch genutzt werden. std::stoi und std::to_wstring.
#include <iostream> #include <string> int main() { std::wstring ws = L"123"; int i = std::stoi(ws); std::wcout << "string = " << std::to_wstring(i) << std::endl; }Keywords: Refactoring C++ Meinung • Datenschutz • C++ • Politik • Refactoring • Gedichte • Links • Git