【问题标题】:How to Add a a List of CString values into a ComboBox in MFC C++? [closed]如何在 MFC C++ 中将 CString 值列表添加到 ComboBox 中? [关闭]
【发布时间】:2018-08-22 06:58:21
【问题描述】:

我有一个CString,它是这样的:

CString cstring = "Aaaa\nBadsalkjhf\nSM876\nSKSJDJHALSD";

如何添加每个 CString 并将这些项目作为列表添加到 ComboBox(MFC、C++)中。

【问题讨论】:

  • “每一个 CString” - 不清楚,这应该是什么意思。这里只有一个CString
  • 首先,了解如何在您选择的分隔符上拆分字符串。其次,学习如何使用 MFC 将 a 字符串放入组合框中,最后从第一个中取出字符串,并利用第二个添加它们。至少我会这样做。

标签: c++ visual-c++ combobox mfc


【解决方案1】:

试试这个 sn-p:

CStringA cstring = "Aaaa\nBadsalkjhf\nSM876\nSKSJDJHALSD";

// transfer to stringstream to ease splitting 
std::stringstream ss;
ss << cstring.GetString();
std::string str;

// splitting using "\n" as the delimiter
while (std::getline(ss,str,'\n')) {     
    ComboBox.AddString(str.c_str());
}

已编辑:适用于 Unicode

#include<iostream>
#include<sstream>
#include"atlstr.h"

void main()
{

    CStringW cstring = L"Aaaa\nBadsalkjhf\nSM876\nSKSJDJHALSD";

    // transfer to stringstream to ease splitting 
    std::wstringstream ss;
    ss << cstring.GetString();
    std::wstring str;

    // splitting using "\n" as the delimiter
    while (std::getline(ss, str, L'\n')) {
        ComboBox.AddString(str.c_str());
    }
}

【讨论】:

  • 另一种方法是使用CString::Tokenize:CStringW str; int index{ 0 }; str = cstring.Tokenize( L"\n", index ); while ( index != -1 ) { ComboBox.AddString( str.GetString() ); str = cstring.Tokenize( L"\n", index ); }。更少的代码和更少的依赖。
  • @IInspectable:谢谢,不知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-23
  • 1970-01-01
  • 2019-02-28
  • 2019-10-19
  • 1970-01-01
相关资源
最近更新 更多