MFC将std::vector<CString>转为std::vector<int>
时间: 2024-06-19 15:03:35 浏览: 10
在MFC中,可以使用循环遍历std::vector<CString>,并将每个字符串转换为int类型,然后将其添加到std::vector<int>中。可以使用CString类的ToInt()函数将CString转换为int类型。以下是一个示例代码:
```
std::vector<CString> strVec; // 原始的字符串vector
std::vector<int> intVec; // 转换后的整型vector
// 假设strVec已经被填充好了
// 循环遍历每个字符串,将其转换为整型并添加到intVec中
for (auto str : strVec) {
int intValue = _ttoi(str); // 将CString转换为int
intVec.push_back(intValue); // 添加到intVec中
}
```
相关问题
mfc编程从一段文字中提取数字
您好,可以使用 MFC 的 CString 类型和正则表达式来提取文本中的数字。以下是示例代码:
```cpp
#include <afx.h>
#include <afxregex.h>
#include <vector>
std::vector<int> ExtractNumbers(const CString& strText)
{
std::vector<int> vecNumbers; // 存储提取出来的数字
CRegExp regExp; // 正则表达式对象
CString strPattern = _T("\\d+"); // 匹配数字的正则表达式
if (regExp.Create(strPattern, CRegExp::doMatchCase | CRegExp::doFind))
{
int nStart = -1;
int nEnd = -1;
while (regExp.Match(strText, nStart, nEnd))
{
CString strNum = strText.Mid(nStart, nEnd - nStart); // 提取数字
int nNum = _ttoi(strNum); // 转换成整数
vecNumbers.push_back(nNum); // 存储到 vector 中
nStart = nEnd; // 更新起始位置
}
}
return vecNumbers;
}
```
这段代码将会从文本中提取出所有的数字,并将其转换成整数类型,存储到一个 vector 中,您可以按照您的需要进行处理。
调用该函数的示例代码:
```cpp
CString strText = _T("这是一段包含数字的文本,比如1234567890。");
std::vector<int> vecNumbers = ExtractNumbers(strText);
for (int i = 0; i < vecNumbers.size(); i++)
{
int nNum = vecNumbers[i];
// 处理提取出来的数字
}
```
这段代码将会从 strText 中提取出所有的数字,并将其保存到一个 vector 中,然后遍历 vector,依次处理提取出来的数字。
listctrl排序
在 C++ 中,可以使用 ListCtrl 控件进行排序。ListCtrl 是 MFC 框架中的一个列表控件,用于显示和编辑数据。要对 ListCtrl 进行排序,可以按照以下步骤进行操作:
1. 获取 ListCtrl 的列数和行数。
2. 创建一个存储行数据的数组。
3. 使用 GetItemText 函数将 ListCtrl 中的每一行数据存储到数组中。
4. 使用标准库中的排序算法(如 std::sort)对数组进行排序。
5. 清空 ListCtrl 的内容。
6. 使用 InsertItem 函数和 SetItemText 函数将排序后的数据重新插入到 ListCtrl 中。
以下是一个简单的示例代码:
```cpp
// 假设 m_listCtrl 是你的 ListCtrl 控件对象
int nColumns = m_listCtrl.GetHeaderCtrl()->GetItemCount(); // 获取列数
int nRows = m_listCtrl.GetItemCount(); // 获取行数
// 创建数组存储行数据
std::vector<std::vector<CString>> rowsData;
for (int i = 0; i < nRows; i++) {
std::vector<CString> rowData;
for (int j = 0; j < nColumns; j++) {
CString str = m_listCtrl.GetItemText(i, j);
rowData.push_back(str);
}
rowsData.push_back(rowData);
}
// 对数组进行排序(以第一列数据为例)
std::sort(rowsData.begin(), rowsData.end(), [](const std::vector<CString>& a, const std::vector<CString>& b) {
return a[0] < b[0];
});
// 清空 ListCtrl 的内容
m_listCtrl.DeleteAllItems();
// 将排序后的数据重新插入到 ListCtrl 中
for (const auto& rowData : rowsData) {
int nIndex = m_listCtrl.InsertItem(m_listCtrl.GetItemCount(), rowData[0]);
for (int i = 1; i < nColumns; i++) {
m_listCtrl.SetItemText(nIndex, i, rowData[i]);
}
}
```
这样,你就可以通过对 ListCtrl 中的数据进行排序来实现排序功能了。请注意,上述代码仅为示例,具体的实现可能因项目而异。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)