小编Ron*_*ean的帖子

如何获取std :: string的尾部?

如何检索一个尾巴std::string

如果愿望成真,那就可以这样:

string tailString = sourceString.right(6);
Run Code Online (Sandbox Code Playgroud)

但这似乎太容易了,而且不起作用......

有什么好的解决方案?

可选问题:如何使用Boost字符串算法库?

添加:

即使原始字符串小于6个字符,该方法也应该保存.

c++

28
推荐指数
4
解决办法
3万
查看次数

指向基类和私有继承的指针

以下简单示例将产生编译器错误,因为我意外地使用私有继承:

main.cpp:21:错误:'A'是'B'无法访问的基础

class A
{


};

class B : /*ups forgot that -> public*/ A
{


};

int main(int , char *[])
{
    A* test = new B;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

你能不能帮我解释一下究竟是在基类交通不便,为什么需要从转换B*A*

c++

10
推荐指数
2
解决办法
2211
查看次数

首先是什么 - 模板实例化与宏扩展?

让我们考虑一下像这样的代码示例(它只是一个人为的例子来组合,define并且template不需要任何意义):

#define COMMA ,

template <typename A> class Test
{
public:
    Test(){}

    void Foo(A var COMMA int test);
};

Test<int> Knarz;
Run Code Online (Sandbox Code Playgroud)

题:

是我的假设是正确的说,第一预处理器将查找/替换逗号所有出现和第二编译器将实例化的顺序任何模板?

跟进:

如果上面的答案是" ",正如我希望的那样,你能解释为什么使用模板和定义的解决方案有效吗?

c++ macros templates c-preprocessor

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

使用带有boost :: format和std :: string的%s格式说明符

我知道使用%s格式说明符和std::string这样会导致未定义的行为:

std::string myString = "test";
printf("%s", myString);
Run Code Online (Sandbox Code Playgroud)

但是,它保存到使用相同的符和std::string使用boost::format

#include <boost/format.hpp>

int main() 
{
   std::string myString = "test";

   boost::format fmt("%s");
   fmt % myString;

   std::cout << fmt.str();

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

%s指定一个(const)char*,但我提供了一个std::string.这会导致UB吗?

c++ boost boost-format

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

为什么我的对象不能访问公共基类中定义的另一个对象的受保护成员?

以下代码生成编译器错误:

'BaseTest :: _ protMember':无法访问类'BaseTest'中声明的受保护成员

为什么我不能访问我的成员变量_protMember,class SubTest即使它受到保护?

class BaseTest
{
public:
    BaseTest(){};

    BaseTest(int prot)
    {
        _protMember = prot;
    };

protected:
    int _protMember;
};

class SubTest : public BaseTest
{
    // followup question
    SubTest(const SubTest &subTest)
    {
        _protMember = subTest._protMember; // this line compiles without error
    };

    SubTest(const BaseTest &baseTest)
    {
        _protMember = baseTest._protMember; // this line produces the error
    };
};
Run Code Online (Sandbox Code Playgroud)

后续问题:

为什么在添加的拷贝构造函数中我可以访问另一个实例的受保护成员

c++

7
推荐指数
2
解决办法
3805
查看次数

使用atoi的结果不同

有人可以解释为什么这些电话没有返回相同的预期结果?

unsigned int GetDigit(const string& s, unsigned int pos)
{
      // Works as intended
      char c = s[pos];
      return atoi(&c);

      // doesn't give expected results
      return atoi(&s[pos]);
      return atoi(&static_cast<char>(s[pos]));
      return atoi(&char(s[pos]));
}
Run Code Online (Sandbox Code Playgroud)

:我不是在寻找一个转化的最佳途径charint.

c++

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

如何初始化构造函数中的位字段

如何在构造函数中将以下结构的值初始化为定义的值?

我的代码示例中显示的两个选项似乎都有点难看......

struct T_AnlagenInfo01
{   
    // Option A
    T_AnlagenInfo01() : fReserve80_0(0), fReserve80_1(0),.... {}; 

    // Option B
    T_AnlagenInfo01()
    { 
        memset(this, 0, sizeof(T_AnlagenInfo01));
    } 

    unsigned long fReserve80_0                          : 1;        
    unsigned long fReserve80_1                          : 1;        
    unsigned long fReserve80_2                          : 1;        
    unsigned long fReserve80_3                          : 1;        
    unsigned long fReserve80_4                          : 1;
    unsigned long fReserve80_5                          : 1;
    unsigned long fReserve80_6                          : 1;
    unsigned long fReserve80_7                          : 1;

    unsigned long fReserve81_0                          : 1;        // 81   
    unsigned long fReserve81_1                          : 1;        
    unsigned long fReserve81_2                          : 1;        
    unsigned …
Run Code Online (Sandbox Code Playgroud)

c++

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

虚函数关键字在函数声明中的位置

是否将virtual关键字放在返回值类型之前或之后的函数声明中是否有任何区别?

virtual void DoSomething() = 0;
void virtual DoSomething() = 0;
Run Code Online (Sandbox Code Playgroud)

void virtual在重构一些遗留代码的同时找到了语法,并且想知道它正在编译...

c++ virtual keyword function-declaration

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

如何用连续的uint填充IEnumerable

这是一个干净,正确的方法来生成连续的列表uints吗?

演员看起来很难看,但我是初学者...可能有一种方法没有施放?

public class Test
{
    static readonly IEnumerable<uint> AvailableChannels 
         = (IEnumerable<uint>)Enumerable.Range(1,1000);
}
Run Code Online (Sandbox Code Playgroud)

c#

3
推荐指数
2
解决办法
1369
查看次数

重置序列(区分大小写)

我尝试将序列 ( test_Id_seq) 设置为这样的新值(请注意序列名称中的大写字母“I”):

SELECT setval(public."test_Id_seq", (select max("Id") from public.test_events), true);
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

错误:缺少表“public”第 1 行的 FROM 子句条目:SELECT setval(public."test_events_Id_seq", (select max("Id... ^ ********** 错误 *****) *****

错误:缺少表“public”的 FROM 子句条目 SQL 状态:42P01

我尝试了括号的不同位置,但没有其他结果。

如何设置序列值?select max() 本身工作正常。

postgresql postgresql-9.4

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

解释async再次等待

这是我的事件处理程序代码:

protected async void TestrunSaveExecute()
{
    bool saveResult = await SaveTestRunAsync();
}
Run Code Online (Sandbox Code Playgroud)

为了保持UI响应,我使用了async/ await方法.

根据我的理解,我现在可以在SaveTestRunAsync()不阻止UI的情况下进行一些冗长的操作,因为它通过使用await关键字解耦.

private async Task<bool> SaveTestRunAsync()
{
    //System.Threading.Thread.Sleep(5000); --> this blocks the UI
    await Task.Delay(5000); // this doesn't block UI

    return true;
}
Run Code Online (Sandbox Code Playgroud)

你能否解释为什么Thread.Sleep仍然阻止用户界面的呼叫,而Task.Delay不是?

.net c# async-await

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