如何将字符串流的状态"重置"为创建它时的状态?
int firstValue = 1;
int secondValue = 2;
std::wstringstream ss;
ss << "Hello: " << firstValue;
std::wstring firstText(ss.str());
//print the value of firstText here
//How do I "reset" the stringstream here?
//I would like it behave as if I had created
// stringstream ss2 and used it below.
ss << "Bye: " << secondValue;
std::wstring secondText(ss.str());
//print the value of secondText here
Run Code Online (Sandbox Code Playgroud) 我使用TortoiseSVN对我的SVN服务器进行了一些错误的代码更改.
现在头部修订版是155,但是我想删除最后2个版本,以便头版本修改为153.换句话说,我想"撤消"我最后两次提交.
我怎么能用TortoiseSVN做到这一点?TortoiseSVN菜单中是否存在选项,还是需要使用命令行?
我正在尝试在我的C++程序中读取XML文件.XML文件看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<myprogram>
<configuration>
<window>
<height> 300 </height>
<width> 500 </width>
</window>
</configuration>
</myprogram>
Run Code Online (Sandbox Code Playgroud)
现在我可以查看XML文件并尝试按如下方式阅读:
ifstream in("mydata.xml");
//ignore the <?xml line
in.ignore(200, '\n');
//i know that the first value i want is the window height so i can ignore <myprogram> <configuration> and <window>
//ignore <myprogram>
in.ignore(200, '\n');
//ignore <configuration>
in.ignore(200, '\n');
//ignore <window>
in.ignore(200, '\n');
string s; int height;
//okay, now i have my height
in >> s >> height;
Run Code Online (Sandbox Code Playgroud)
一般来说,这似乎是个坏主意,它确实限制了XML文件的修改方式.上面的解决方案是非常手动的,如果XML中的任何内容发生变化,似乎必须更改整个读取方法.
有一个更好的方法吗?
这个问题适用于std::set和std::unsorted_set.
我有一个集合中元素的迭代器.我想使用迭代器根据元素在集合中的位置获取元素的"索引".
例如,我的集合的索引如下:
int index = 0;
for(MySetType::iterator begin = mySet.begin(); begin != mySet.end(); begin++)
{
cout << "The index for this element is " << index;
index++;
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用迭代器进行算术运算,但它不起作用:
int index = mySetIterator - mySet.begin();
Run Code Online (Sandbox Code Playgroud)
有没有办法使用迭代器根据它在集合中的位置获取这样的索引值?
我想生成0到3之间的随机数,我的代码中有以下内容:
int random = rand() % 4;
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我希望它在大多数时间生成1,2和3,偶尔生成0.
最好的方法是什么?解决此问题的常用算法有哪些名称?
我std::unordered_set第一次使用a 并且对哈希函数有疑问.据我所知,如果你没有指定哈希函数,它将默认为std::hash<Key>.
我的一个mySet班级有一名成员:
typedef std::unordered_set<MyClass> USetType;
USetType mySet;
Run Code Online (Sandbox Code Playgroud)
当我尝试构建时,我收到以下错误:
错误C2440:'type cast':无法从'const MyClass'转换为'size_t'
size_t如果要使用unordered_set自定义类,是否需要定义转换函数(to )?有没有办法避免编写自己的哈希函数并只使用默认值?
我试过谷歌搜索,但我没有想出任何东西.我使用Dreamhost的系统设置了一个SVN服务器,它说一切都是成功创建的.但是现在当我尝试导入时(注意我用我的实际网站替换mysite.com):
svn import MySource http://svn.mysite.com/myproject -m"初始导入"--username paul
我收到一个错误: svn:E175002:无法连接到URL'http://svn.mysite.com/myproject'svn的存储库:E175002:服务器发送意外返回值(500内部服务器错误)以响应OPTIONS请求为'http://svn.mysite.com/myproject'
怎么了?
有人告诉我,由于C++ 11的变化,以下内容是可能的:
class SomeType {
int number;
public:
SomeType(int new_number) : number(new_number) {}
SomeType() : SomeType(42) {}
};
Run Code Online (Sandbox Code Playgroud)
但是当我尝试构建时,我收到一个错误:
"SomeType" is not a nonstatic data member or base class of class "SomeType"
error C2614: 'SomeType' : illegal member initialization: 'SomeType' is not a base or member
Run Code Online (Sandbox Code Playgroud)
Visual Studio 2010中是否还不支持此功能?我是否需要配置一些东西来构建它?怎么了?
我需要在整个程序中引用各种常量.我一直在使用静态const类成员,而不是使用全局变量:
class Human
{
public:
static const int HANDS = 2;
static const int FINGERS = 10;
};
Run Code Online (Sandbox Code Playgroud)
问题是我需要从XML数据文件中读取值.我知道我可以用函数初始化一个静态成员:
const int Human::HANDS = ReadDataFromFile();
Run Code Online (Sandbox Code Playgroud)
由于初始化顺序只能在同一个编译单元中预测,因此我必须在同一个CPP文件中定义所有这些顺序.这不是一个真正的问题,但它有点混乱.
真正的问题是,在我的代码甚至有机会运行之前,我的ReadDataFromFile()函数中的所有内容都需要准备好使用.例如,我有一个XML类,通常处理从文件中读取XML数据.但是,我不能在这种情况下使用它,因为静态成员在我的XML类对象构造之前被初始化.
除了随处可见的全局变量之外,还有更好的解决方案来组织常量吗?
我正在尝试更好地掌握Visual Studio 2013中的CRT库选项(C++ - >代码生成 - >运行时库)以及如何知道选择哪个选项(以及何时更改默认值).
来自MSDN:
可重用库及其所有用户应使用相同的CRT库类型,因此使用相同的编译器开关.
因此,我的理解是,如果您要链接第三方库,则应使用与构建库相同的CRT版本.构建库的人应该指定构建中使用的CRT选项.
有没有办法通过查看.lib文件来确定使用哪个CRT版本?
更重要的是,如果您没有链接任何第三方库,您将如何决定使用哪个选项?您何时考虑更改默认值?
c++ ×8
svn ×2
apache ×1
c++11 ×1
const ×1
constructor ×1
crt ×1
dreamhost ×1
hash ×1
iterator ×1
random ×1
static ×1
stl ×1
string ×1
stringstream ×1
tortoisesvn ×1
visual-c++ ×1
xml ×1