似乎C ++ / CX没有StringBuilder类或等效类,所以我认为我们要使用STL吗?
这是我的第一个 C ++ / CX应用程序。用户在TextBox中输入一些文本,点击ENTER按钮,文本被附加到TextBlock“控制台”。这段代码确实有效,但最佳做法是什么?
public ref class MainPage sealed
{
public:
MainPage();
protected:
virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override;
private:
std::wstring _commandLine;
std::wstring _consoleText;
void Button_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
};
...
void HelloConsole::MainPage::Button_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
this->_commandLine = this->InputLine->Text->Data();
this->_commandLine.append(L"\n");
this->_consoleText += this->_commandLine;
this->InputLine->Text = "";
this->OutputConsole->Text = ref new Platform::String(_consoleText.c_str());
}
答案 0 :(得分:5)
似乎C ++ / CX没有StringBuilder类或等效类,所以我认为我们要使用STL吗?
是的,一般来说,您更喜欢在C ++代码中使用C ++类型。仅在您必须的位置使用Windows运行时类型(例如Platform::String
),例如在ABI边界或跨组件边界传递数据时。
您的代码段中的字符串处理看起来很好 - 复制到std::wstring
进行突变是合理的。