怎么把std::string* A 用printf输出
时间: 2024-05-15 16:13:59 浏览: 122
可以通过`printf`的格式化字符串控制输出,使用`%s`格式化字符串输出`std::string`类型的指针。
例如:
```c++
#include <cstdio>
#include <string>
int main() {
std::string str = "hello world";
std::string* ptr = &str;
// 使用 printf 输出字符串
printf("%s\n", ptr->c_str());
return 0;
}
```
其中,`ptr->c_str()` 返回一个指向 C 风格字符串的指针,可以直接用于`printf`函数的格式化输出。
相关问题
void HttpServer::HandleHttpEvent(mg_connection *connection, http_message *http_req) { std::string req_str = std::string(http_req->message.p, http_req->message.len); printf("got request: %s\n", req_str.c_str()); // 先过滤是否已注册的函数回调 std::string url = std::string(http_req->uri.p, http_req->uri.len); std::string body = std::string(http_req->body.p, http_req->body.len);
这段代码看起来是一个处理 HTTP 请求的函数,函数名为 HandleHttpEvent,接收两个参数:连接对象和 HTTP 请求对象。函数主要做了以下几件事情:
1. 将 HTTP 请求对象转换成字符串 req_str。
2. 打印出请求字符串 req_str,用于调试和日志输出。
3. 从 HTTP 请求对象中获取请求的 URL 和请求体,分别保存在 url 和 body 变量中。
目前看不到这段代码的完整实现,因此无法判断函数的返回值和异常处理等细节。
template<typename OutputType> inline optional<OutputType> ValueComposer<OutputType>::compose(InternalStateContainer* internalState, const std::vector<std::string>* names, ValueComposerUserFunc<OutputType> getter) { //printf("ValueComposer compose 000-----.\n"); EStorageMap states; for (auto name : *names) { eframework::TypeID type = internalState->getType(name); if (type == TypeID::get<int>() && (internalState->get<int>(name)) != nullopt) { states.set<int>(name, *internalState->get<int>(name)); //printf("ValueComposer compose set---int--.\n"); } else if (type == TypeID::get<float>() && (internalState->get<float>(name)) != nullopt) { states.set<float>(name, *internalState->get<float>(name)); //printf("ValueComposer compose set---float--.\n"); } else if (type == TypeID::get<bool>() && (internalState->get<bool>(name)) != nullopt) { states.set<bool>(name, *internalState->get<bool>(name)); //printf("ValueComposer compose set---bool--.\n"); } else if (type == TypeID::get<std::string>() && (internalState->get<std::string>(name)) != nullopt) { states.set<std::string>(name, *internalState->get<std::string>(name)); //printf("ValueComposer compose set---string--.\n"); } else { //printf("ValueComposer compose set---nullopt--.\n"); return nullopt; } } //printf("ValueComposer compose 111-----.\n"); return getter(&states); }
这是一个ValueComposer类的成员函数模板`compose`的实现。该函数接受三个参数:一个指向`InternalStateContainer`对象的指针`internalState`,一个指向字符串向量的指针`names`,以及一个`ValueComposerUserFunc<OutputType>`类型的函数指针`getter`。
函数首先创建一个名为`states`的`EStorageMap`对象,用于存储状态值。然后遍历`names`向量中的每个字符串,通过调用`internalState`对象的`getType`函数获取相应名称的类型,并根据类型将对应的值存储到`states`对象中。
如果某个名称对应的类型不匹配或者值为`nullopt`,则返回空的`optional<OutputType>`。
最后,调用传入的`getter`函数指针,将`states`对象作为参数传递,并返回其结果。
注释部分是一些调试打印语句,可以用于调试程序时打印相关信息。
阅读全文