小编Jes*_*uhl的帖子

C++ - 测试空指针的最有效方法是什么?

testinf指针无效的两种方式之间最有效的是:if(pointer==NULL)if(!pointer).

MyObject* p;
[...]
// Solution 1
if ( p )
{ // Do something
}
// Solution 2
if ( p!=NULL )
{ // Do something
}
Run Code Online (Sandbox Code Playgroud)

c++ performance pointers

1
推荐指数
2
解决办法
820
查看次数

isdigit()函数传递一个中文参数

当我尝试使用isdigit()带有中文字符的函数时,它会在Visual Studio 2013中以调试模式报告一个断言,但在发布模式下没有问题.

我想如果这个函数是确定参数是否为数字,那么如果中文错误,为什么它不返回0?

这是我的代码:

string testString = "abcdefg12345??";
int count = 0;
for (const auto &c : testString) {
    if (isdigit(c)) {
        ++count;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是断言:

图片

c++

1
推荐指数
1
解决办法
223
查看次数

如何检查向量是否在指定索引内包含特定字符?

我想知道如何(如果可能的话)从向量的开头到指定的索引(如果存在字符)进行搜索。

伪代码:

vector<char> a{a, b, c, d, e, f, /*...*/};

if (from a.begin() to a[2] b exists) {
... }
Run Code Online (Sandbox Code Playgroud)

最有效的方法是什么?

c++ algorithm search vector

1
推荐指数
1
解决办法
96
查看次数

C++ - 当流指针作为函数参数给出时意味着什么?

我对 C++ 不太熟悉,所以很抱歉这是一个如此简单的问题。我正在做一项学校作业,在其中一个问题中,它要求我们编写一个具有以下原型的函数

    void function_name(istream &in, ostream &out, other arguments);
Run Code Online (Sandbox Code Playgroud)

我真的不知道前两个参数是什么意思。据我所知,如果我错了,请纠正我。istream 是一个在输入中使用的类。cin 是此类的一个对象。ostream 是在输出中使用的类。cout 和 cerr 是此类的对象。istream 类的对象具有fail() 和.eof() 等方法来检测输入期间的错误。ostream 类的对象具有 .width() 和 . precision() 等方法来帮助格式化输出。

因此,根据我对问题的理解,前两个参数必须是指向 istream 和 ostream 对象的指针。谁能给我一个以 istream 和 ostream 对象指针作为参数的函数示例,以便我能够理解如何在我的问题中使用它们?

抱歉,如果这太长了。谢谢您的帮助。

c++ pointers iostream

0
推荐指数
1
解决办法
2087
查看次数

在关闭文件之前实时写入文件

我使用以下命令将Solver()函数(第三个库中的函数)发出的输出结果写入文件中:caffe

\n\n
if(std::freopen("redir.txt", "w", stdout)) {\n    std::printf("stdout is redirected to a file\\n"); // this is written to redir.txt\n    solver->Solve();\n    std::fclose(stdout);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但由于该Solve()函数连续发出输出,但在执行redir.txt\xe2\x80\x8d 之前不会更新。std::fclose(stdout);所以我无法实时看到结果。

\n\n

如何实时更新我的​​文件?

\n

c++ caffe

0
推荐指数
1
解决办法
476
查看次数

在编译时是否对C++中的文字进行算术运算?

在这里,类似的问题被要求C#:

是否在编译时对C#中的文字进行了算术运算?,

并且java:

文字的算术运算是在编译时还是运行时计算的?.

考虑到C++,是否会在运行或编译时评估以下计算?第一种是定义内置类型,第二种是函数参数.

但是请考虑它们用于所有4种基本算术运算以及其他内置类型,例如,int而不是double以下类型.

  • double testDouble = 2.0 + 2.0;
  • aUserDefinedType testUserDefinedTypeObject ( aMemberVariable*std::pow(someOtherVariable, 1.0/8.0) );

c++

0
推荐指数
1
解决办法
386
查看次数

没有类型,结构绑定不起作用?

我尝试做这样的事情

pair<int, int> f() {
    return {1, 2};
}

int a, b;
[a, b] = f();
Run Code Online (Sandbox Code Playgroud)

并得到编译错误。所有错误都归结为一个事实,即编译器认为它是一个语法错误的 lambda。所以如果我使用结构化绑定,我总是应该写auto?

c++ binding c++17

0
推荐指数
1
解决办法
51
查看次数

我不知道为什么使用 boost asio 的代码会导致错误

我创建了主 cpp 文件和三个类来创建异步服务器。 ServerService、 和Acceptor分别。然而,它们在构建过程中导致了错误,即使在 Visual Studio 2019 环境中没有错误。我试图修复这个错误,但大多数错误都发生在其他文件中,所以我自己都想不起来。

main

#include "Server.h"
#include <iostream>
#include <boost/asio.hpp>
#include <thread>
#include <atomic>
#include <memory>
#define DEFAULT_THREAD_SIZE 2;
using namespace boost;
int main()
{
 unsigned short port_num;
    std::cin >> port_num;
    try {
        Server srv;
        unsigned int threads = std::thread::hardware_concurrency() * 2;
        if (threads == 0) {
            threads = DEFAULT_THREAD_SIZE;
        }
        std::cout << "\nPort - " << port_num << "\nServer start\n";
        srv.Start(port_num, threads);
        while (1) {
            std::cin >> srv; …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-asio

0
推荐指数
1
解决办法
1267
查看次数