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++

MeinungC++RefactoringGedichteDatenschutzLinksPolitikGit