使用c++ string 实现Cstring的ReverseFind 方法
时间: 2023-08-02 14:09:10 浏览: 202
C++ 中的 std::string 类提供了类似于 CString 的 ReverseFind 方法,可以使用该方法查找字符串中最后一个匹配字符的位置。实现方法如下:
```c++
#include <iostream>
#include <string>
using namespace std;
int main() {
string str = "hello world";
char ch = 'l';
// 查找字符 'l' 最后一次出现的位置
size_t pos = str.rfind(ch);
if (pos != string::npos) {
cout << "Last occurrence of " << ch << " found at position " << pos << endl;
} else {
cout << ch << " not found in string" << endl;
}
return 0;
}
```
在上面的代码中,我们使用 std::string 类的 rfind 方法查找字符 'l' 最后一次出现的位置,并将结果存储在变量 pos 中。如果找到了该字符,则输出其位置;否则输出未找到的提示信息。
相关问题
c++ http 上传文件
在C++中实现HTTP文件上传可以使用CInternetSession类和CHttpConnection类来建立HTTP连接,并使用OpenRequest方法打开连接。然后,可以使用AddRequestHeaders方法添加HTTP请求头,并使用SendRequestEx方法发送请求至HTTP服务器。使用CInternetFile的Write和WriteString方法可以发送文件数据至服务器。上传文件的大小可以通过计算协议头大小、数据描述字段字节大小、实际数据字节大小和协议尾大小来确定。最后,使用EndRequest方法关闭连接。以下是一个简单的C++代码示例:
```cpp
#include <afxinet.h>
void UploadFile(const CString& filePath, const CString& serverURL)
{
CInternetSession session;
CHttpConnection* pConnection = session.GetHttpConnection(serverURL);
if (pConnection)
{
CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T("upload.php"));
if (pFile)
{
CString fileName = filePath.Mid(filePath.ReverseFind('\\') + 1);
CString contentType = _T("Content-Type: application/octet-stream\r\n");
CString contentDisposition = _T("Content-Disposition: form-data; name=\"file\"; filename=\"") + fileName + _T("\"\r\n");
CString endBoundary = _T("\r\n--BOUNDARY--\r\n");
CString headers = contentType + contentDisposition + endBoundary;
DWORD headersLength = headers.GetLength();
DWORD fileSize = GetFileSize(filePath);
DWORD totalRequestLength = headersLength + fileSize;
CString requestHeaders;
requestHeaders.Format(_T("Content-Length: %d\r\n"), totalRequestLength);
pFile->SendRequestEx(requestHeaders, (LPVOID)(LPCTSTR)headers, headersLength, HSR_SYNC | HSR_INITIATE);
pFile->WriteFile(filePath);
pFile->EndRequest();
pFile->Close();
delete pFile;
}
pConnection->Close();
delete pConnection;
}
session.Close();
}
```
请注意,这只是一个简单的示例代码,实际应用中可能需要根据具体需求进行修改和完善。
#### 引用[.reference_title]
- *1* [C++实现HTTP上传](https://blog.csdn.net/srests/article/details/50751599)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [form表单上传文件,C++开发后台服务,协议解析实操](https://blog.csdn.net/aflyeaglenku/article/details/51668673)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文