草庐IT

c++ - 在不使用 std 的情况下如何使用 int32_t?

这是我的代码:#includeintmain(){int32_ti=5;std::cout这是输出:$clang++-std=c++11-pedantic-Wall-Wextrafoo.cpp&&./a.outi:5这是我的问题:C++标准似乎在std命名空间内的cstdint中定义了int32_t。在我的代码中,我既没有包含cstdint也没有使用std命名空间。为什么编译器不报错? 最佳答案 名字int32_t也出现在C库头文件的全局范围内stdint.h.这可能使它在C++中也全局可见。本节[Headers]说:...thec

c++ - 想要 : a C++ template idea to catch an issue, 但在编译时?

我们有一个常量结构数组,像这样:staticconstSettingsSuT_table[]={{5,1},{1,2},{1,1},etc};结构如下:size_bytes:num_items:其他“元数据”成员所以“总大小”是单个元素的size_bytes*num_items。所有这些信息都在const数组中,在编译时可用。但是,请注意,_table的总大小与EEPROM本身的大小无关。_table不镜像EEPROM,它只描述了布局、用途和我们需要的其他“元数据”类型的信息。但是,您可以使用此元数据来确定我们正在使用的EEPROM的数量。数组简单地描述了存储在外部EEPROM中的数据

c++ - 我需要将 strtol 的结果转换为 int 吗?

以下代码在g++4.1.1和-Wall中不会给出警告。intoctalStrToInt(conststd::string&s){returnstrtol(s.c_str(),0,8);}我原以为会收到警告,因为strtol返回一个longint,但我的函数只返回一个普通的int。其他编译器可能会在这里发出警告吗?在这种情况下,我是否应该将返回值转换为int作为一种好的做法? 最佳答案 最好的方法是:longx=strtol(...);assert(x你需要limits.h和assert.h

c++ - 奇怪的错误 : cannot convert from 'int' to 'ios_base::openmode'

我正在使用g++编译一些代码。我写了以下片段:boolWriteAccess=true;stringName="my_file.txt";ofstreamFile;ios_base::open_modeMode=std::ios_base::in|std::ios_base::binary;if(WriteAccess)Mode|=std::ios_base::out|std::ios_base::trunc;File.open(Name.data(),Mode);我收到这些错误...知道为什么吗?错误1:从“int”到“std::_Ios_Openmode”的无效转换错误2:初始化'

c++ - 将 size_t 转换为 int 以声明 char 数组的大小

我正在尝试声明一个char数组的大小,我需要使用声明为size_t的变量的值来声明该大小。无论如何我可以将size_t变量转换为int以便我可以这样做吗? 最佳答案 size_t是一个整数类型,不需要转换。在C++中,如果您想拥有一个动态大小数组,您需要使用new来使用动态分配。也就是说,您不能使用:std::size_tsz=42;charcarray[sz];您需要改用以下内容:std::size_tsz=42;char*carray=newchar[sz];//...andlater,whenyouaredonewiththe

c++ - C++用stringstream将string转int并获取消耗的字符数

我是C++新手(具有C#背景),正在尝试学习如何将字符串转换为int。我通过使用stringstream并将其输出到double来让它工作,如下所示:constchar*inputIndex="5+2";doublenumber=0;stringstreamss(inputIndex);ss>>number;//number=5这很好用。我遇到的问题是我正在解析的字符串以数字开头,但可能在数字后有其他非数字字符(例如“5+2”、“9-(3+2)”等)。stringstream在开头解析数字并在遇到非数字时停止,就像我需要的那样。当我想知道有多少字符被解析为数字时,问题就来了。例如,如果

C++ 错误 : invalid types 'int[int]' for array subscript

尝试学习C++并完成一个关于数组的简单练习。基本上,我已经创建了一个多维数组,我想创建一个打印出值的函数。Main()中的注释for循环工作正常,但是当我尝试将该for循环转换为函数时,它不起作用,而且对于我来说,我不明白为什么。#includeusingnamespacestd;voidprintArray(inttheArray[],intnumberOfRows,intnumberOfColumns);intmain(){intsally[2][3]={{2,3,4},{8,9,10}};printArray(sally,2,3);//for(introws=0;rows

c++ - 将 C++0x 的 atomic<int> 作为非原子访问

我的程序中有一个atomic类型的原子变量.在某些地方,我不需要以原子方式访问其中的值,因为我只检查它是否为0。换句话说,在那些情况下,我想避免在有原子访问时发生的总线锁定等开销。如何以非原子方式访问原子变量。使用(int)对其进行类型转换是否足够,如下所示?如果不是,我想我该怎么做?atomicatm;intx;........x=(int)atm;//Wouldthisbeanon-atomicaccess,nobuslockingetall? 最佳答案 您无法摆脱原子性属性。但是您可以通过放宽内存排序保证来减少使用原子变量所涉

c++ - 从 C#/Java 到 C++ : Understanding C++ references in an example?

来自C#/Java背景,我正在尝试了解使用C++指针和引用的最佳实践。我敢肯定这已经在这个网站上被令人作呕地覆盖了,但我仍然不完全理解它。我已经阅读了一些C++常见问题解答,但我需要在上下文中查看它。假设我有两个类:classEmployee{Employee();~Employee();}classCompany{Company();~Company();AddEmployee(??employee);??GetEmployee();private:std::listemployees_;}在哪里AddEmployee获取一个员工对象并将其添加到员工的私有(private)列表中。A

c++ - 如何通过迭代器将 map<string, int> push_back 到 vector<map<string, int>> 中?

我目前正在学习AcceleratedC++(Koening/Moo)这本书,但我在其中一个练习中遇到了问题。任务是编写一个程序,将一些单词序列作为输入,然后将其存储在map中。.字符串是输入的单词和关联的int是每个单词出现的次数。然后,您必须根据单词出现的次数对单词进行排序;也就是说,按值而不是键。您不能按值对映射进行排序,因此我尝试将元素复制到vector中,我打算使用谓词对其进行排序。不幸的是,我得到的只是一个充满g++错误的屏幕。它们似乎源于同一个地方-将我的map的元素放入我的vector中,我尝试这样做:intmain(){mapcounters;cout>word)++c