3

似乎 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());
}
4

1 回答 1

5

似乎 C++/CX 没有 StringBuilder 类或等效类,所以我认为我们将为此使用 STL?

是的,一般来说,您应该更喜欢在 C++ 代码中使用 C++ 类型。Platform::String仅在必须的地方使用 Windows 运行时类型(如),例如在跨 ABI 边界或跨组件边界传递数据时。

代码片段中的字符串处理看起来很好——复制到std::wstringfor 突变是合理的。

于 2012-11-24T00:52:19.573 回答