【发布时间】:2014-08-28 15:06:52
【问题描述】:
我只想用字符“:”分割这个字符串 例如“第一个:最后一个” 所以一个字符串将具有“first”,另一个将具有“last”
我确实喜欢这个网址中的那个 (sscanf string splitting not working) 但这对我来说效果不佳,因为两个字符串都将具有“最后一个”值
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include <cstring>
#include<tchar.h>
#include<atlstr.h>
using namespace std;
void main()
{
CString firstString(""), secondString(""), myString("first:last");
sscanf(myString, "%[^:]:%s", firstString, secondString);
printf("first: %s, last: %s", firstString, secondString);
system("pause");
}
【问题讨论】:
-
不能像 C io 输入函数那样直接使用 MFC 字符串。那些需要字符缓冲区。
-
这应该如何工作?
sscanf()是一个 C 函数,它将填充字符缓冲区,而不是CString对象。 -
实际上,您可以使用CString::GetBuffer,然后使用
CString::ReleaseBuffer,但仍然不是最好的方法。 -
由于您使用的是 MFC,您也可以使用
CString类完全使用Find然后获取子字符串。 -
如果你打算使用 MFC(真的 使用),你通常希望尽可能避免使用 C 函数,只在你无法获得的地方使用
GetBuffer围绕它(API调用等)。另一方面,您可以只在此处使用 C 样式字符串并保留sscanf,因为您根本不使用CString。