LPCTSTR lpszFile = “c://User//1.tar.gz”;如何截取字符串获得1.tar
时间: 2023-08-01 08:09:39 浏览: 42
可以使用字符串截取函数来实现,可以使用 substr 函数或者 strtok 函数。
使用 substr 函数的示例代码如下:
```cpp
string filename = "c://User//1.tar.gz";
string basename = filename.substr(filename.find_last_of("//") + 1);
basename = basename.substr(0, basename.find_last_of("."));
cout << basename << endl; // 输出 1.tar
```
使用 strtok 函数的示例代码如下:
```cpp
char* filename = "c://User//1.tar.gz";
char* basename = strtok(filename, "//");
while (basename != NULL) {
filename = basename;
basename = strtok(NULL, "//");
}
basename = strtok(filename, ".");
cout << basename << endl; // 输出 1.tar
```
两种方法都可以得到字符串 "1.tar",你可以根据自己的需要选择使用哪种方法。
相关问题
MFC上传图片到 http://169.254.1.10:8090/api/v1/~bali/ABC0123456789
首先,你需要使用 MFC 提供的 CInternetSession 和 CHttpConnection 类来创建连接。接着,你需要使用 CHttpFile 对象来打开一个 HTTP POST 请求,并将文件数据写入请求中。最后,你需要发送请求并等待响应。
下面是一个简单的示例代码:
```cpp
void UploadImage(LPCTSTR imagePath)
{
// 创建 Internet 会话
CInternetSession session;
// 创建 HTTP 连接
CHttpConnection* connection = session.GetHttpConnection(_T("169.254.1.10"), 8090);
CString path = _T("/api/v1/~bali/ABC0123456789");
// 打开 HTTP 请求
CHttpFile* file = connection->OpenRequest(CHttpConnection::HTTP_VERB_POST, path);
// 设置请求头
CString contentType = _T("Content-Type: application/octet-stream");
file->AddRequestHeaders(contentType);
// 打开本地文件
CFile localFile;
if (!localFile.Open(imagePath, CFile::modeRead))
{
// 处理文件打开失败的情况
return;
}
// 获取文件大小
ULONGLONG fileSize = localFile.GetLength();
// 将文件数据写入 HTTP 请求
DWORD bytesRead = 0;
BYTE buffer[1024];
while (bytesRead < fileSize)
{
DWORD count = localFile.Read(buffer, sizeof(buffer));
if (count == 0)
{
// 处理读取文件失败的情况
break;
}
file->Write(buffer, count);
bytesRead += count;
}
// 发送 HTTP 请求
file->EndRequest();
// 获取 HTTP 响应
DWORD statusCode;
file->QueryInfoStatusCode(statusCode);
if (statusCode != HTTP_STATUS_OK)
{
// 处理 HTTP 请求失败的情况
return;
}
// 关闭 HTTP 请求和连接
file->Close();
connection->Close();
// 关闭 Internet 会话
session.Close();
}
```
注意,这只是一个简单的示例,并且没有进行错误处理和异常情况的处理。在实际使用中,你需要根据具体情况进行适当的错误处理和异常情况的处理。
MFC如何向 http://169.254.1.10:8090/api/v1/~bali/ABC0123456789 发送图片
在MFC中,可以使用WinHTTP库向指定URL发送HTTP请求并上传图片。以下是一个简单的示例代码:
```c++
#include <afxinet.h>
#include <winhttp.h>
BOOL UploadImage(LPCTSTR lpszFilePath, LPCTSTR lpszUrl)
{
// 打开文件
CFile file;
if (!file.Open(lpszFilePath, CFile::modeRead))
{
return FALSE;
}
// 初始化WinHTTP
HINTERNET hSession = WinHttpOpen(L"MFC WinHTTP Example",
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
WINHTTP_NO_PROXY_NAME,
WINHTTP_NO_PROXY_BYPASS,
WINHTTP_FLAG_ASYNC);
if (!hSession)
{
return FALSE;
}
// 打开连接
HINTERNET hConnect = WinHttpConnect(hSession, L"169.254.1.10", 8090, 0);
if (!hConnect)
{
WinHttpCloseHandle(hSession);
return FALSE;
}
// 打开请求
HINTERNET hRequest = WinHttpOpenRequest(hConnect, L"POST", L"/api/v1/~bali/ABC0123456789",
NULL, WINHTTP_NO_REFERER,
WINHTTP_DEFAULT_ACCEPT_TYPES,
WINHTTP_FLAG_REFRESH);
if (!hRequest)
{
WinHttpCloseHandle(hConnect);
WinHttpCloseHandle(hSession);
return FALSE;
}
// 设置请求头
CStringA strHeaders = "Content-Type: image/jpeg\r\n";
if (!WinHttpAddRequestHeaders(hRequest, strHeaders, -1L, WINHTTP_ADDREQ_FLAG_REPLACE))
{
WinHttpCloseHandle(hRequest);
WinHttpCloseHandle(hConnect);
WinHttpCloseHandle(hSession);
return FALSE;
}
// 发送请求
if (!WinHttpSendRequest(hRequest, NULL, 0, NULL, 0, file.GetLength(), 0))
{
WinHttpCloseHandle(hRequest);
WinHttpCloseHandle(hConnect);
WinHttpCloseHandle(hSession);
return FALSE;
}
// 上传数据
DWORD dwBytesWritten = 0;
DWORD dwBytesRead = 0;
BYTE buffer[4096];
while (dwBytesWritten < file.GetLength())
{
DWORD dwBytesToRead = min(sizeof(buffer), file.GetLength() - dwBytesWritten);
file.Read(buffer, dwBytesToRead);
if (!WinHttpWriteData(hRequest, buffer, dwBytesToRead, &dwBytesRead))
{
WinHttpCloseHandle(hRequest);
WinHttpCloseHandle(hConnect);
WinHttpCloseHandle(hSession);
return FALSE;
}
dwBytesWritten += dwBytesRead;
}
// 结束请求
if (!WinHttpReceiveResponse(hRequest, NULL))
{
WinHttpCloseHandle(hRequest);
WinHttpCloseHandle(hConnect);
WinHttpCloseHandle(hSession);
return FALSE;
}
// 关闭连接
WinHttpCloseHandle(hRequest);
WinHttpCloseHandle(hConnect);
WinHttpCloseHandle(hSession);
return TRUE;
}
```
在调用该函数时,将图片文件路径和目标URL作为参数传入即可:
```c++
UploadImage(L"C:\\Images\\test.jpg", L"http://169.254.1.10:8090/api/v1/~bali/ABC0123456789");
```