有可能打开一堆蠕虫并获得负面投票,我发现自己需要问,
我什么时候应该使用正则表达式?何时更适合使用字符串解析?
而且我将需要关于你的立场的例子和推理.我希望你能解决一些问题,比如可读性,可维护性,扩展性以及你答案中最重要的性能.
我发现另一个问题在这里只有一个答案,甚至困扰一个例子.我需要更多了解这一点.
我目前正在使用C++,但是正则表达式几乎都是高级语言,我想知道不同的语言如何使用/处理正则表达式,但这更像是一种思考.
感谢您帮助理解它!
编辑:我仍然在寻找更多的例子,并就此进行讨论,但到目前为止的反应非常好.:)
有没有办法制作setw和setfill填充字符串的末尾而不是前面?
我有一种情况,我打印这样的东西.
CONSTANT TEXT variablesizeName1 .....:number1
CONSTANT TEXT varsizeName2 ..........:number2
Run Code Online (Sandbox Code Playgroud)
我想添加一个可变数量'.'的结尾
"CONSTANT TEXT variablesizeName#"所以我可以":number#"在屏幕上排队.
注意:我有一个数组,"variablesizeName#"所以我知道最广泛的情况.
要么
我应该做手工设置setw这样的
for( int x= 0; x < ARRAYSIZE; x++)
{
string temp = string("CONSTANT TEXT ")+variabletext[x];
cout << temp;
cout << setw(MAXWIDTH - temp.length) << setfill('.') <<":";
cout << Number<<"\n";
}
Run Code Online (Sandbox Code Playgroud)
我想这可以做到这一点,但感觉有点笨重.
想法?
我有两种形式Form1,并Form2
我打开Form2从Form1上button_Click
Form2 obj2 = new Form2();
this.Visible = false;
obj2.Show();
Run Code Online (Sandbox Code Playgroud)
然后我想回到Form1可见的(处置Form2)在我离开的控件的相同状态.....
我的问题是怎么做
while(cin>>x)
{
//code
}
Run Code Online (Sandbox Code Playgroud)
工作.或者更具体地说,那段代码会停止循环?
从这里的文档中,它看起来像>>运算符返回一个&istream.这是否意味着如果读取失败或命中文件末尾它不仅设置eofbit,failbit或badbit而且还返回null?这真的没有意义,所以我怀疑是这样.
有没有对eofbit进行某种隐式检查?
我问,因为我希望用这样的2个类来实现类似的东西,
class B
{
//variables and methods
}
class A
{
//Variables and methods
//Container of B objects. ex. B[] or vector<B> or Map<key,B>
&A >> (B b);
}
int main()
{
A a;
B b;
while( a >> b)
{
//Code
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我不打算继承,istream除非它是使这项工作的魔力来自哪里.这样做的原因是我希望保持类及其依赖关系尽可能小.如果我继承istream我将收到所有公共和受保护的东西,我不是想创建一个istream类似的对象.我只想复制一件真正好看的东西.
编辑:我正在使用Visual Studio 2010(这正在成为一个真正的痛苦),我将需要与它的C++ 03 +一些C++ 11的实现兼容的东西.
如何在其中声明具有固定大小数组的结构?
我找到了解决方案,但它只适用于原始数据类型.我需要我的阵列类型MyStruct.
那么如何在其中声明一个包含其他结构数组的结构?
恩.
unsafe struct Struct1{
fixed int arrayInt[100]; // works properly
fixed Struct2 arrayStruct[100]; //not compile
}
Run Code Online (Sandbox Code Playgroud) 是否有可能编写一个采用字符串流并使其看起来像这样的方法,
void method(string str)
void printStringStream( StringStream& ss)
{
method(ss.str());
}
Run Code Online (Sandbox Code Playgroud)
并且可以像这样调用
stringstream var;
printStringStream( var << "Text" << intVar << "More text"<<floatvar);
Run Code Online (Sandbox Code Playgroud)
我查找<<运算符,看起来它返回一个ostream&对象,但我可能读this错了或者没有正确执行它.
我真正想要的只是一种将字符串连接在一起并将其传递给函数的简洁方法.我能找到的最干净的东西是一个stringstream对象,但仍然有很多不足之处.
笔记:
我不能使用很多c++11答案,因为我在Visual Studio 2010上运行(违背我的意愿,但仍然)
我有机会Boost这么坚持下去.
只要清理这个烂摊子我就不会反对自定义方法.
编辑:
随着@Mooing Duck的回答与@PiotrNycz语法的混合我实现了我这样编写代码的目标,
try{
//code
}catch(exception e)
{
printStringStream( stringstream() << "An exception has occurred.\n"
<<" Error: " << e.message
<<"\n If this persists please contact "<< contactInfo
<<"\n Sorry for the inconvenience");
}
Run Code Online (Sandbox Code Playgroud)
这是我所希望的那样清洁和可读.
希望这有助于其他人清理写信息.
我有一个多线程C#应用程序,其中核心逻辑位于Timer.Elapsed事件处理程序中.事件处理程序包含2个for循环,最多执行n * n = 5 * 5 = 25 times.
该应用程序在我的PC上运行良好.我VS 2010 Profiler针对应用程序运行,CPU使用率平均为20%.
该公司的测试人员说,在他的电脑上,他的电脑上的这个数字会上升到50%到100%之间.这导致了他的性能问题.
XCPU的数量?任何帮助,将不胜感激.
所以我试图在下拉列表中设置标签的样式.我的MVC助手设置类似这样,但真实的东西来自数据库,因此数据不是硬编码的.
@{
List<string> ListOfText = new List<string> { "FirstThing","SecondThing","ThirdThing"};
List<string> ListOfValue = new List<string> { "1","2","3"};
List<SelectListItems> ListOFSELCETLISTITEMS = new List<SelectListItem>();
for (int x = 0; x < 3; x++)
{
ListOFSELCETLISTITEMS .Add(new SelectListItem
{
Text = ListOfText[x],
Value = ListOfValue[x],
Selected = (selectedValue == ListOfValue[x])
});
}
}
@Html.DropDown("NAME",ListOFSELCETLISTITEMS)
Run Code Online (Sandbox Code Playgroud)
这给了我类似的东西
<select id="Name" name="Name">
<option value="1">FirstThing</option>
<option value="2">SecondThing</option>
<option value="3">ThirdThing</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我需要的是这样的东西
<select id="Name" name="Name">
<option value="1" class="option1">FirstThing</option>
<option value="2" class="option2">SecondThing</option>
<option value="3" class="option3">ThirdThing</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我尝试过这样的事情
@{
List<string> ListOfText = …Run Code Online (Sandbox Code Playgroud) 我遇到按日期从表中提取数据的情况。如果没有提供给定日期的数据,我将使用默认值创建一条记录并将其全部显示给用户。当用户处理完数据后,我需要提交更改。
所以我的问题是我如何在实体框架中提交表以处理可能同时存在更新和添加的表。这是使用MVC3和Entity Framework的C#语言。
因此,这就是开始数据的样子,
表A
NAME AGE PHONE_NUM
Jim 25 555-555-5555
Jill 48 555-551-5555
Run Code Online (Sandbox Code Playgroud)
在用户处理完数据后,看起来可能像这样,
表A
NAME AGE PHONE_NUM
Jim 25 555-555-5555
Jill 28 555-551-5555
Rob 42 555-534-6677
Run Code Online (Sandbox Code Playgroud)
如何提交这些更改?我的问题是既需要更新又需要插入吗?
我已经找到了一些类似的代码,但我不知道这种情况是否行得通。
用于添加数据行
entities.TABlEA.AddObject(TableOBJECT);
entities.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
或用于更新数据
entities.TABLEA.Attach(entities.TABLEA.Single(t => t.NAME == TableOBJECT.NAME));
entities.TABLEA.ApplyCurrentValues(TableOBJECT);
entities.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
这项工作中的任何一项还是我需要跟踪那里的内容和添加的内容?
有想法吗?
c# ×5
c++ ×3
.net ×2
html ×2
performance ×2
cin ×1
cpu-usage ×1
for-loop ×1
formatting ×1
html5 ×1
interop ×1
istream ×1
javascript ×1
operators ×1
parsing ×1
regex ×1
setw ×1
string ×1
stringstream ×1
winforms ×1