首先,有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());
在 wxWidgets 3.0 下,你可以使用
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:
从 wxWidgets 3.0 开始,你可以使用合适的构造函数
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);
如何将浮点数转换为 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 转换为浮点数?
wxString number(wxT("3.14159"));
double value;
if(!number.ToDouble(&value)){ /* error! */ }
所以字符串编号被写入value。
我希望这对某人有所帮助,因为每次我想转换一些东西时,我都会重新开始搜索网络。如果有改进或我忘记了什么,请随时纠正我,因为这是我的第一个问答:)