怎么来这个代码
std::map <std::string , int> m;
m["a"]=1;
Run Code Online (Sandbox Code Playgroud)
编译(我正在使用MSVC 2010)
#include <string>
Run Code Online (Sandbox Code Playgroud)
但没有
#include <string.h>
Run Code Online (Sandbox Code Playgroud)
?
我偶然发现了一些像这样的(c ++)代码:
int $T$S;
Run Code Online (Sandbox Code Playgroud)
首先,我认为它是某种PHP代码或者错误地粘贴在那里但它编译并运行得很好(在MSVC 2008上).
什么类型的字符对C++中的变量有效,是否还有其他奇怪的字符可以使用?
有一种简单的方法可以通过Windows中的相关程序打开文件吗?(比如在Windows资源管理器中双击它,但使用我的代码自动完成)
例如,在计算机A上,"text.txt"将在wordpad中打开,但在计算机B上,它将由Notepad ++打开,因为用户文件扩展名分配.
我试过ShellExecute
ShellExecute(0, L"open", L"c:\\windows\\notepad.exe" ,L"c:\\outfile.txt" , 0 , SW_SHOW );
Run Code Online (Sandbox Code Playgroud)
这有效,但如果我省略notepad.exe参数奇怪的事情发生(显示随机浏览器).
可能重复:
C++ STL集更新很繁琐:我无法更改元素
我已经解决了问题并更改了名称,因此为了简单起见.
基本上我实例化一个类,并将其存储在std :: set中,稍后我想要引用该类,以便我可以检查它的值并修改它们......
简化代码:
MyClass tmpClass;
std::set<MyClass > setMyClass;
setMyClass.insert(tmpClass);
std::set<MyClass >::iterator iter;
iter=setMyClass.begin();
MyClass &tmpClass2=*iter;
Run Code Online (Sandbox Code Playgroud)
和错误:
error C2440: 'initializing' : cannot convert from 'const MyClass' to 'MyClass &'
Run Code Online (Sandbox Code Playgroud)
(我删除了部分错误消息"MVB :: Run ::"以清除它.)
如果我在最后一行代码中添加一个前面的"const",那么一切都运行良好但是我无法更改值...
这是正常行为,我必须删除数据,更改值并重新将其重新放回?
我觉得这与集合的排序有关,但我不会触及用于排序的变量.
c ++是否有(或多或少)标准int类?
如果不是这样,是否计划说C++ 13,如果不是这样,是否有任何特殊原因?
我猜想OOP设计会从中受益,例如,在返回int的自定义类中有一个赋值运算符会很好:
int i=myclass;
Run Code Online (Sandbox Code Playgroud)
并不是
int i=myclass.getInt();
Run Code Online (Sandbox Code Playgroud)
好的,有很多可能有用的例子,为什么不存在(如果没有)?
它适用于航位推算和其他滞后补偿方案,并将这些值视为"正常"变量将是好的,无论如何!
我在我的(C++)游戏中使用Lua作为脚本语言.在一个调用中(从lua到c ++)我检查堆栈顶部的类型:
if(lua_type(L, (0)) == LUA_TSTRING)
Run Code Online (Sandbox Code Playgroud)
但有时lua_type(L,(0))返回9.
我似乎无法找到任何引用(返回值应介于-1和8之间或LUA_TNONE,LUA_TNIL,... LUA_TTHREAD).
发生了什么?
可能重复:
在C++类中,为什么在结束括号后的分号
这是我一直想知道的事情,为什么你必须在c ++的类,结构或枚举的结束括号后面加一个分号?
更糟糕的(或实际问题),为什么编译器在发出警告时会发出错误?
将分号放在那里是否真的很重要,为什么?
我正在寻找一个用于Windows的snmp服务器,有免费(或至少是工作试用版),我只能找到客户端吗?
我知道我可以安装windows snmp服务,但是在工作中它并不是一个真正的选择(我没有所需的"win xp"CD,支持也很复杂,甚至更糟,星期五).
谢谢!
有没有办法在这样的for循环中使用自动变量时擦除特定元素?
for(auto a: m_Connections)
{
if(something)
{
//Erase this element
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以说
for(auto it=m_map.begin() ...
Run Code Online (Sandbox Code Playgroud)
要么
for(map<int,int>::iterator it=m_map.begin() ...
Run Code Online (Sandbox Code Playgroud)
并手动增加迭代器(和擦除),但如果我能用更少的代码行完成它,我会更高兴.
谢谢!
我正在制作一个在线游戏,当我从客户端接收数据时,我会收到几个“结构”(比如“我的位置”、“使用药水 23”、“攻击玩家 45”、“talk bla bla”、注销等) .),这些结构被安全读取并放入结构中,推送到列表中并(稍后,当服务器有时间时)进行处理。
问题是处理是一个大的 switch 语句(打开某种枚举-“RTTI”),我有 60 多个不同的结构,它们都是不同的。
因此,包含处理代码的 .cpp 开始变得相当大,并且随着我不断向游戏添加功能(c++ 大约在 4000-5000 行之间),它不会随时缩小。
我可以看到一个简单的解决方案,每种情况都会调用另一个文件中的函数,但这实际上会(请注意 harriyott,是的,因为我的项目和驱动器将被新文件淹没)会爆炸我需要知道的文件数量并跟踪。
我知道我可以在几个 fileN.cpp 中分割它(案例)并在处理文件中制作 '#include "file1.cpp" #include "file2.cpp" 等等,但这似乎是非常错误的。我“想出”来规避这个问题的任何其他方式似乎都太“hacky”了。
所以问题是,你如何很好地拆分一个大的 switch 语句?
c++ ×9
std ×2
windows ×2
auto ×1
class ×1
const ×1
header ×1
header-files ×1
identifier ×1
int ×1
iterator ×1
lua ×1
networking ×1
oop ×1
set ×1
snmp ×1
string ×1
variables ×1
visual-c++ ×1