如何在c ++ / cx中修剪Platform :: String myString =“answer”

时间:2018-01-24 10:02:34

标签: uwp c++-cx

我想修剪c ++ / cx中的字符串,我使用的是Platform :: String

Platform::String myString = "  answer "

1 个答案:

答案 0 :(得分:2)

Platform::String是Windows运行时HSTRING类型的包装器,它是不可变的。理想情况下,只应在需要它的Windows运行时组件的公共接口中使用Platform::String,否则请考虑std::wstring修改字符串的操作,例如修剪。

正如documentation所述:

  

在C ++模块中,对任何重要的文本处理使用标准C ++字符串类型(如wstring),然后在将结果传递给公共接口或从公共接口传递之前将最终结果转换为Platform :: String ^。在wstring或wchar_t *和Platform :: String之间进行转换非常简单有效。

您可以使用以下代码从Platform::String转换为wstring,然后修剪,然后从结果中转换创建新Platform::String

Platform::String^ myString = ref new Platform::String(L"  answer ");
//convert to wstring
std::wstring classicString(myString->Data());

//trimming
classicString.erase(0, classicString.find_first_not_of(' '));
classicString.erase(classicString.find_last_not_of(' ') + 1);

//convert to Platform::String
Platform::String^ modifiedString = ref new Platform::String(classicString.c_str());

有关修剪wstring的更多参与解决方案,请参阅this SO post