怎么把CString型转移到普通字符串里
时间: 2023-02-23 15:09:50 浏览: 51
在 C++ 中,可以使用 CString 的 "c_str()" 函数将其转换为普通字符串 (string)。例如:
```
CString cs = "hello";
string str = cs.c_str();
```
也可以使用 C++11 中的 `std::string` 构造函数直接转换:
```
CString cs = "hello";
string str = std::string(cs.GetString());
```
请注意,在使用 c_str() 函数之前,需要确保 CString 对象是有效的。
相关问题
c++把CString 字符串保存到.DAT的文件里
如果您正在使用MFC框架并且想要将CString字符串保存到.DAT文件中,您可以按照以下步骤进行操作:
1. 包含必要的头文件:
```cpp
#include <iostream>
#include <fstream>
#include <string>
#include <afxstr.h>
```
2. 使用CStdioFile类打开.DAT文件以供写入数据:
```cpp
CStdioFile file;
if (file.Open(_T("data.dat"), CFile::modeCreate | CFile::modeWrite))
{
// 文件打开成功
}
```
3. 将CString对象转换为标准字符串(std::string):
```cpp
CString cstr = _T("Hello, world!");
std::string str((LPCTSTR)cstr);
```
4. 将标准字符串写入文件:
```cpp
file.WriteString(str.c_str());
```
5. 关闭文件以确保数据被保存:
```cpp
file.Close();
```
完整的代码示例:
```cpp
#include <iostream>
#include <fstream>
#include <string>
#include <afxstr.h>
int main()
{
CStdioFile file;
if (file.Open(_T("data.dat"), CFile::modeCreate | CFile::modeWrite))
{
CString cstr = _T("Hello, world!");
std::string str((LPCTSTR)cstr);
file.WriteString(str.c_str());
file.Close();
}
else
{
std::cout << "Failed to open the file." << std::endl;
return 1;
}
return 0;
}
```
上述代码将CString字符串"Hello, world!"保存到名为data.dat的.DAT文件中。请注意,我们使用CStdioFile类来处理文件的打开、写入和关闭操作,同时需要将CString转换为标准字符串以便写入文件。
CString 数字类型字符串,分隔保存到Vector
好的,您可以使用以下代码将一个 CString 类型的数字类型字符串按照指定分隔符分隔,并保存到一个 vector 中:
```c++
#include <vector>
#include <string>
#include <sstream>
std::vector<std::string> splitCString(CString str, char delimiter)
{
std::vector<std::string> result;
std::stringstream ss(CW2A(str));
std::string item;
while (std::getline(ss, item, delimiter))
{
result.push_back(item);
}
return result;
}
```
这个函数使用了 stringstream 和 getline 函数来实现分隔字符串的功能,其中 CW2A 函数用于将 CString 转换为 char* 类型。您可以调用这个函数,并传入需要分隔的 CString 字符串和分隔符,例如:
```c++
CString str = _T("123,456,789");
std::vector<std::string> vec = splitCString(str, ',');
```
这个例子中,vec 将会保存分隔后的三个字符串 "123","456" 和 "789"。