gpt4 book ai didi

c++ - 如何在wxWidgets中使用wxString、数字和其他字符串类型

转载 作者:行者123 更新时间:2023-11-30 03:36:20 29 4
gpt4 key购买 nike

当我开始在 C++ 中使用 wxWidgets(在 code::blocks 中)进行编程时,我经常遇到不知道如何以好的方式使用 wxString 的问题。主要原因是 C++ 中已经有几种字符串类型,wxWidgets 现在又增加了一种。我已经从另一个没有 wxWidgets 的项目中导入了一些类,所以现在一切都需要兼容。

这导致了几个问题:

  • 如何将wxString转换成另一种字符串类型?
  • 如何将另一种字符串类型转换为wxString?
  • 如何将整数转换为 wxString?
  • 如何将 wxString 转换为整数?
  • 如何将 float 转换为 wxString?
  • 如何将 wxString 转换为 float ?

最佳答案

首先,有this helpfull site in the wxWidgets wiki关于如何处理 wxStrings。我将部分引用它,尽管在我看来它没有我需要的那么详细,这就是我创建此问答的原因。


如何将wxString转换成另一种字符串类型?

对于 C 风格的字符串,我使用这种方法:

wxString fileName = "myFile";
const char* fileNameChar = fileName.mb_str();

要将 wxString 转换为 std::string 使用(如网站所述):

wxWidgets 2.8 :

wxString mystring(wxT("HelloWorld"));
std::string stlstring = std::string(mystring.mb_str());

Under wxWidgets 3.0, you may use

wxString::ToStdString()

对于wxWidgets 3.0下的std::wstring,你可以使用

wxString myString = "abc";
std::wstring myWString = wxString::ToStdWstring(myString);

(未测试,已记录 here)。


如何从另一种字符串类型转换?

要从 C 样式字符串转换,请使用:

const char* fileNameChar = "myFile";
wxString fileName(fileNameChar);

对于 std::strings 要么

std::string fileNameStd = "myFile";
wxString fileName(fileNameStd.c_str());

或者(来自 wxWidgets 3.0)

wxString fileName(fileNameStd);

对于 std::wstring:

Starting from wxWidgets 3.0, you may use the appropriate constructor

std::wstring stlstring = L"Hello world";
// assuming your string is encoded as the current locale encoding (wxConvLibc)
wxString mystring(stlstring);

如何将整数转换为wxString?

你可以使用

int number = 3;
wxString myString = wxString::Format(wxT("%i"), number);

#include <wx/numformatter.h>

int number = 3;
wxString myString = wxNumberFormatter::ToString(number);

第二种方法已记录here .您不必使用该标志,您不仅可以使用文档中的 long ,还可以使用其他整数类型(就像我在这里使用 int ).


如何将wxString转为整数?

我一直用这个方法:

wxString numberString = "12345";
int number = wxAtoi(numberString);

如何将 float 转换为wxString?

如果您不需要设置浮点值的精度(正常精度是逗号后的 6 个数字),您可以使用第一种方法

double doubleNumber = 12.3455;
wxString numberString = wxString::Format(wxT("%f"), doubleNumber);

请小心,因为无论您要转换double 还是float 数字,它都是"%f"。如果您尝试使用 "%d" 而不是您的程序将会崩溃。如果您使用此方法转换逗号后超过 6 位的任何内容,它将被截断。

如果你需要给定的准确度,你可以使用这个函数

#include <wx/numformatter.h>

double doubleNumber = 12.2345912375;
int accurracy = 10;
wxString numberString = wxNumberFormatter::ToString(doubleNumber, accurracy);

如何将wxString转换为 float ?

wxString number(wxT("3.14159"));
double value;
if(!number.ToDouble(&value)){ /* error! */ }

因此字符串编号被写入value


我希望这对某人有帮助,因为每次我想转换一些东西时,我都会重新开始搜索网络。如果有需要改进的地方或者我忘记了什么,请随时纠正我,因为这是我的第一个问答 :)

关于c++ - 如何在wxWidgets中使用wxString、数字和其他字符串类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40766419/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com