我一直在Chrome上使用curl&Postman将带有一个变量的http POST请求发送到我运行的简单HTTP服务器,我注意到他们构建请求的方式略有不同.如果我在构建问题时可能使用了任何不正确的术语,我会道歉 - 我还在学习这些东西.
使用Postman,通过放置'?'来构造请求 资源名称和变量之间.例如
http://192.168.0.2:9999/1/command?a=b
Run Code Online (Sandbox Code Playgroud)
但是,以下curl命令:
curl -X POST http://192.168.0.2:9999/1/command --data a=b
Run Code Online (Sandbox Code Playgroud)
不放'?' 资源名称和变量之间.
结果是HTTP服务器以不同方式解释请求.
在第一种情况下,请求的主体是空的,而在第二种情况下,主体包含a = b.
哪个版本是正确的?
以下代码在Visual Studio 2013下运行但不是gcc 4.9.2时会引发异常.
报告的错误是:
'例外:stol争论超出范围'
stol返回一个long大小temp应该足够大以保存返回值.
谁能解释这种行为.这可能是编译器错误吗?
#include <iostream>
#include <exception>
#include <string>
#include <stdexcept>
int main()
{
const std::string value = "4294967295"; // 0xffffffff
try
{
int64_t temp = std::stol(value);
}
catch (std::invalid_argument& ex)
{
std::cout << "invalid_argument: " << ex.what() << "\n";
}
catch (std::exception& ex)
{
std::cout << "exception: " << ex.what() << "\n";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 下面是头文件中的一些简化代码,其中声明了自由函数但未定义,并且声明并定义了向量。
cpp 文件包含自由函数的实现。
我想知道是否有办法在头文件中声明向量并将定义放在 cpp 文件中。
// my-file.h
namespace MyNamespace
{
bool foo(const std::string& name, const std::string& value);
void bar(const std::string& name, const std::string& value);
const std::vector<std::function<void(const std::string&, const std::string&)>> m_myVector
{
foo,
bar,
[](const std::string& name, const std::string& value)
{
// do some stuff
}
};
} // MyNamespace
Run Code Online (Sandbox Code Playgroud) 我是cmake的新手(2.8.12.1),我在Windows上使用它生成项目文件,使用Visual Studio 2012构建cpp-netlib.
默认情况下,它使用/ MDd编译器开关进行编译.我想改变它,以便它使用/ MTd.
我按照这里给出的建议/sf/answers/992101001/但它不适合我.
具体来说,我在if语句中添加了下面显示的第二行到CmakeLists.txt.
if (MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
endif()
Run Code Online (Sandbox Code Playgroud)
当我打开Visual Studio sln文件时,我可以看到仍然设置了/ MDd选项.此外,我在CMakeCache.txt中看到以下内容:
//Flags used by the compiler during debug builds.
CMAKE_CXX_FLAGS_DEBUG:STRING=/D_DEBUG /MDd /Zi /Ob0 /Od /RTC1
Run Code Online (Sandbox Code Playgroud)
我也尝试过像这样设置标志:
set(CMAKE_CXX_FLAGS_DEBUG "/MTd")
Run Code Online (Sandbox Code Playgroud)
但这也不起作用.
如果我通过命令行传递选项,如下所示:
-DCMAKE_CXX_FLAGS_DEBUG="/MTd"
Run Code Online (Sandbox Code Playgroud)
该选项已在Visual Studio项目中成功设置.
谁能告诉我我做错了什么?
如果有人可以告诉我缓存中的值来自于我未在命令行中指定或不在CmakeLists.txt中的位置,我也将不胜感激.
根据请求添加CMakeList.txt.如果我没有做到这一点,我从来没有发布过这样的道歉.
# Original from cpp-netlib.org with my edits
cmake_minimum_required(VERSION 2.8)
project(CPP-NETLIB)
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTI_THREADED ON)
find_package( Boost 1.45.0 REQUIRED unit_test_framework system regex date_time thread filesystem program_options chrono )
find_package( OpenSSL )
find_package( Threads …Run Code Online (Sandbox Code Playgroud) 我正在使用 gcov 来测量我的 C++ 代码中的覆盖率。我希望能够标记某些源代码行,以便在使用 gcovr 时将它们排除在覆盖率报告之外。我知道它们存在,因为我曾经偶然发现过它们,但现在我找不到在哪里看到它们了。
我没有使用 lcov 来报告覆盖率,所以对这些标记的引用对我没有好处。
谁能指出我正确的地方?
我有一个自由函数,foo在名称空间N中定义。的标头foo位于全局包含搜索路径中,因此任何人都可以通过包括来调用它foo.h。
foo调用另一个本地自由函数foo1,该函数在中定义foo.cpp。
// foo.h
namespace N
{
void foo();
}
// foo.cpp
#include "foo.h"
namespace
{
// declare in the unnamed namespace?
void foo1()
{
// do some stuff
}
}
namespace N
{
// declare in namespace N?
void foo1()
{
// do some stuff
}
void foo()
{
foo1();
}
} // N
Run Code Online (Sandbox Code Playgroud)
我应该放入foo1未命名的名称空间还是namespace N?还是没关系?
更新
我想将范围限制foo1为foo.cpp。
Java 8 allows iteration over a Map using forEach and a lambda expression as follows:
myMap.forEach((k, v)->{ System.out.println("Key: " + k + " Value: " + v); });
Run Code Online (Sandbox Code Playgroud)
Is it possible to iterate over a MultivaluedMap using forEach and a lambda expression?
UDPATE
How do I call foo with 2 String parameters for a MultivaluedMap<String, String>?
myMultiMap.forEach((k, v)->{ foo(k, v); });
Run Code Online (Sandbox Code Playgroud) 我正在使用 Jackson v2.8.2 将 JSON 序列化到文件中。
我创建了一个自定义序列化器并实现了serialize根据需要自定义 JSON 输出的方法。
我按如下方式调用序列化器:
// myClass is the object I want to serialize
SimpleModule module = new SimpleModule();
module.addSerializer(MyClass.class, new MySerializer());
ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
mapper.registerModule(module);
try
{
mapper.writeValue(new File("json.txt"), myClass);
}
catch (JsonProcessingException e)
{
...
}
Run Code Online (Sandbox Code Playgroud)
JSON 文件已创建,内容看起来不错。
该文件的格式根据DefaultPrettyPrinter但我想使用我自己的自定义PrettyPrinter,我已经实现了。
我怎么做?
我尝试过以下方法:
MyPrettyPrinter myPrettyPrinter = new MyPrettyPrinter();
mapper.writer(myPrettyPrinter);
mapper.writeValue(new File("json.txt"), myClass);
Run Code Online (Sandbox Code Playgroud)
但这并没有调用我的自定义打印机。
以下代码std::bad_weak_ptr在ctor for MyCommand执行但函数未执行时导致异常MyCommand::execute。
class Observer
{
public:
Observer(){}
virtual ~Observer(){}
virtual void update(const std::string& msg) = 0;
};
class Command
{
public:
Command(){}
virtual ~Command(){}
virtual void execute() = 0;
};
class MyCommand : public Command, public Observer, public std::enable_shared_from_this<MyCommand>
{
public:
MyCommand()
{
// std::bad_weak_ptr exception
std::shared_ptr<Observer> observer = shared_from_this();
}
virtual ~MyCommand(){}
private:
virtual void execute()
{
// no exception
std::shared_ptr<Observer> observer = shared_from_this();
}
virtual void update(const std::string& msg){}
};
int main(int …Run Code Online (Sandbox Code Playgroud)