MFC分割字符串,不用Split
时间: 2024-09-15 21:10:06 浏览: 33
MFC(Microsoft Foundation Classes)是一个Windows应用程序开发框架,它提供了一系列的预定义类来简化图形用户界面(GUI)程序的开发。如果你需要在MFC中分割字符串但不想使用内置的`CString::Split`函数,你可以手动遍历字符串,通过查找特定分隔符来进行切割。例如:
```cpp
std::string str = "Hello|World|This|Is|MFC";
char delimiter = '|';
size_t pos = 0;
std::vector<std::string> tokens;
while ((pos = str.find(delimiter)) != std::string::npos) {
// 获取从开始到分隔符的子串,并添加到结果向量中
tokens.push_back(str.substr(0, pos));
// 移动起始位置到下一个字符的位置
str.erase(0, pos + 1);
}
// 最后一个部分未找到分隔符,添加到结果向量中
tokens.push_back(str);
// 现在tokens包含分割后的各个部分
for (const auto& token : tokens) {
// 使用token...
}
```
相关问题
MFC中分割怎么分割字符串
在MFC(Microsoft Foundation Classes)框架中,如果你想分割字符串,通常可以使用`CString::Split`函数,它是一个用于将字符串按照特定分隔符拆分成多个部分的方法。这个函数的基本语法如下:
```cpp
CString strOriginal; // 原始字符串
const TCHAR* szDelimiter = _T(","); // 分割符,例如逗号
// 使用Split函数
CStringArray tokens;
strOriginal.Split(tokens, szDelimiter);
for (int i = 0; i < tokens.GetSize(); ++i)
{
CString token = tokens[i]; // 获取每个分割后的子串
// 这里可以对token进行进一步操作...
}
```
在这个例子中,`strOriginal.Split(tokens, szDelimiter)`会把原始字符串`strOriginal`按照逗号(`szDelimiter`)进行分割,并将结果存储到`CStringArray` `tokens`中。你可以通过遍历`tokens`来获取每个子串。
MFC C++ 一个字符串按照特殊字符分割,然后保存在一个数组中
在MFC的C++中,如果你想要将一个字符串按照特定的分隔符拆分成多个子串并存储在一个数组中,你可以使用`split`函数结合`CStringArray`。`CStringArray`是MFC中处理字符串数组的一个便利工具。下面是一个示例,展示如何操作:
```cpp
#include "afxwin.h"
#include "atlstr.h"
void SplitStringIntoArray(CString strInput, const TCHAR delimiter, CStringArray& arrOutput)
{
// 使用find和substr进行逐段分割
int pos = -1;
while ((pos = strInput.Find(delimiter)) != -1)
{
// 提取子串到arrOutput
if (pos > 0)
{
arrOutput.Add(strInput.Mid(0, pos));
}
// 移除已处理的部分,以便下一次查找
strInput = strInput.Mid(pos + 1);
}
// 添加最后一个完整的子串
if (!strInput.IsEmpty())
{
arrOutput.Add(strInput);
}
}
int main()
{
CString str("Hello;World;This;Is;A;Test");
CStringArray arrOutput;
SplitStringIntoArray(str, _T(";"), arrOutput);
// 现在arrOutput包含了["Hello", "World", "This", "Is", "A", "Test"]
for (size_t i = 0; i < arrOutput.GetCount(); ++i)
{
AFX_TRACE(arrOutput[i]);
}
return 0;
}
```
在这个例子中,我们使用";"作为分隔符,将字符串strInput拆分为多个部分,并存储在`arrOutput`数组中。
阅读全文