草庐IT

c++ - 从 int** 到 const int** 的转换

为什么我会进入这段代码:voidfoo(constint**);intmain(){int**v=newint*[10];foo(v);return0;}这个错误:invalidconversionfrom‘int**’to‘constint**’[-fpermissive]|我认为可以将非常量转换为常量。 最佳答案 这是因为您正试图将int**转换为constint**int**v=newint*[10];//visint**foo(v);//butfootakesconstint**int**是:“指向整数指针的指针”。cons

c++ - 为什么 std::result_of<int(int)>::type 无效?

我已阅读以下相关问题:std::result_ofsimplefunctiondecltype,result_of,ortypeof?和thepageonstd::result_ofatcppreference.com.所有这些似乎都表明我应该能够使用:std::result_of::typev1=10;但是,当我尝试使用g++4.9.2构建以下程序时#includeintfoo(){return0;}intmain(){std::result_of::typev1=10;//LINEAstd::result_of::typev2=20;//LINEBreturn0;}我收到“LINE

c++ - C++ int数组中的foreach

我是C++的新手,我正在编写以下代码。我需要遍历调用函数中的所有插件-testFunction。我知道这在C#中有效,但这段代码不起作用。任何人都可以指出在C++中执行此操作的正确方法吗?#include"stdafx.h"#include#include"resource.h"inttestFunction(char*tester);int_tmain(){intmainProd=2;intAddons[]={7,8,9,10};testFunction(mainProd,Addons);}voidtestFunction(intmainProd,intaddons[]){for(i

c++ - size_t 到 unsigned int(来自 API 函数)

我正在使用OracleAPI访问数据库,此API有一个函数readBuffer(char*buffer,unsignedintsize);,我无法对其进行任何更改。我有一个使用此API的类,我的函数的签名目前采用std::string和unsignedint作为大小,问题是当我将std::string.size()传递给函数的size参数时,我从编译器收到一条警告,将size_t转换为unsignedint可能导致数据丢失。我想知道是否有一种有效的方法可以将size_t转换为unsignedint,这样我就可以将它传递给我的API而不是从编译器得到警告?我理解size_t的目的,并且在

c++ - 为什么C/C++会自动将char/wchar_t/short/bool/enum类型转换为int?

因此,如果我理解得很好,积分提升提供了:char、wchar_t、bool、enum、short类型总是转换为int(或无符号整数)。然后,如果表达式中有不同的类型,将应用进一步的转换。我理解得很好吗?如果是,那么我的问题是:它为什么好?为什么?不要成为不必要的char/wchar_t/bool/enum/short吗?我的意思是例如:charc1;charc2;c1=c2;正如我之前所描述的,char总是被转换为int,所以在这种情况下,在自动转换之后它看起来像这样:intc1;intc2;c1=c2;但我不明白为什么这样好,如果我知道char类型就足以满足我的需要的话。

C++ 和 QT4.5 - 传递一个 const int& 矫枉过正?通过引用传递对信号/插槽有帮助吗?

两个问题合而为一...对于实时视频处理应用程序,我有许多函数每帧调用多次。听取有关const和按引用传递的建议,这些函数的签名有点像这样voidprocessSomething(constint&value);当我不断输入几个额外的字符时,我想知道这是否有点矫枉过正。第二个问题,关于通过引用传递的主题,在QT的槽/信号机制中,通过引用传递是否有助于防止在正常函数调用中复制对象? 最佳答案 是的,这是矫枉过正,实际上会导致代码比按值传递int慢。一个int是四个字节;引用(本质上是一个内存地址)也是四个字节(在32位机器上)或八个字节

c++ - 将 <vector><string> 转换为 <vector><int> C++, Win32

在C++、win32中是否有一些方法可以将vector转换为vector?我有这个带数字的字符串vector:std::vectorDataNumbers;我需要将这个vector字符串转换成vector整数。 最佳答案 给定:std::vectorDataNumbers;//FillDataNumbersstd::vectorData;您可以使用std::transform.使用std::back_inserter将值插入std::vector.对于一元函数,使用使用std::stoi的lambda表达式将字符串转换为整数。std

c++ - 将数字 append 到 int 而不转换为字符串?

是否有一种安全的方法可以在不将整数转换为字符串且不使用字符串流的情况下在整数末尾添加数字?我试着用谷歌搜索这个问题的答案,大多数解决方案都建议将其转换为字符串并使用字符串流,但我想将其保留为整数以确保数据完整性并避免转换类型。我还阅读了一个建议将int乘以10然后添加数字的解决方案,但这可能会导致整数溢出。这样做安全吗?或者有更好的方法吗?如果我这样做乘以10并添加数字解决方案,我应该采取什么预防措施? 最佳答案 您最好的选择是乘以10再加上该值。你可以做anaivecheck像这样:assert(digit>=0&&digit

c++ - 将 int 转换为 wstring

我想将整数值(int)转换为std::wstring。做这个的最好方式是什么?我正在为WindowsPhone开发,所以我宁愿避免使用外部库(例如boost::lexical_cast)。我正在寻找一些简单的东西,最好是仅将int分配给wstring的一行代码。如有任何帮助,我们将不胜感激。 最佳答案 你在找std::to_wstring吗std::wstringto_wstring(intvalue);(sinceC++11)Convertsasigneddecimalintegertoawidestringwiththesame

c# - 在 C# 中创建 int 数组的指针?

以下C++程序按预期编译和运行:#includeintmain(intargc,char*argv[]){int*test=newint[10];for(inti=0;i对于这个问题,我能做的最接近的C#简单示例是:usingSystem;classProgram{unsafestaticintMain(string[]args){//errorCS0029:Cannotimplicitlyconverttype'int[]'to'int*'int*test=newint[10];for(inti=0;i那么如何制作指针呢? 最佳答案