从C++;到C# 这是一个C++内存代码,用于读取内存的地址,用于高速缓存内存模拟: char hex[20]; ifstream infile; infile.open(filename,ios::in); if(!infile) { cout<<"Error! File not found..."; exit(0); } int set, tag, found; while(!infile.eof()) { //Reading each address from trace file if(base!=10) { infile>>hex; address = changebase(hex, base); } else { infile>>address; } set = (address / block_size) % no_set; tag = address / (block_size * no_set); }
问题是在线从C++;到C# 这是一个C++内存代码,用于读取内存的地址,用于高速缓存内存模拟: char hex[20]; ifstream infile; infile.open(filename,ios::in); if(!infile) { cout<<"Error! File not found..."; exit(0); } int set, tag, found; while(!infile.eof()) { //Reading each address from trace file if(base!=10) { infile>>hex; address = changebase(hex, base); } else { infile>>address; } set = (address / block_size) % no_set; tag = address / (block_size * no_set); },c#,c++,operator-overloading,iostream,C#,C++,Operator Overloading,Iostream,问题是在线infle>>hex C#给出了语法错误,因为右移运算符不能应用于字符串运算符 为什么这不起作用?我正在做一个小的缓存命中和错过计算项目。< P> C不使用BcStand也意味着流操作的奇异C++约定。您必须实际调用I/O方法。以量化Eric的含义: C++在可以重载的运算符方面非常灵活。位移位运算符也可用于输入和输出,这已成为一种“习惯用法”。这实际上有点道理,因为这是一种逻辑结构,眼睛在物体之间记录了某种“流动” 在C#中,不能重载这些运算符。Eric的意思是,您需要明确地说,在流
infle>>hex代码>
C#给出了语法错误,因为右移运算符不能应用于字符串运算符
为什么这不起作用?我正在做一个小的缓存命中和错过计算项目。< P> C不使用BcStand也意味着流操作的奇异C++约定。您必须实际调用I/O方法。以量化Eric的含义:
C++在可以重载的运算符方面非常灵活。位移位运算符
也可用于输入和输出,这已成为一种“习惯用法”。这实际上有点道理,因为这是一种逻辑结构,眼睛在物体之间记录了某种“流动”
在C#中,不能重载这些运算符。Eric的意思是,您需要明确地说,在流对象上,写(或者实际上读)一些东西。这意味着直接调用这些方法
本质上,你也在做同样的事情——操作符重载只是一个很好的快捷方式,但在一天结束时,会调用一些方法——无论是一个装饰性的“操作符重载”还是一个简单的带名称的旧函数调用
<>所以,在C++中我们可以写:
std::cout << "Hello" << std::endl;
如果我们忽略了std::cout
可能与控制台窗口不同的事实(这是说明性的),那么概念是完全相同的
为了扩展操作符的概念,您可能还遇到了stringstream
。。类似于字符串流的类。这真的很有用:
std::stringstream ss;
int age = 25;
ss << "So you must be " << age << " years old.";
他们都做完全相同的事情。我们还可以做:
sb.AppendFormat("So you must be {0} years old", age);
(在我看来)这更类似于类似C的
sprintf
方法,或者最近的方法。您是否可以通过添加有关调用哪些方法的细节来帮助回答?就目前而言,这是一个非常有趣的评论。好吧,但我怎么做呢,我是一个初学者,请提供一些解释您编写infle.
,然后等待Intellisense介入。@fredsoverflow但是…但是…我使用Vim。这是否意味着我不能在C#中执行I/O操作(@frederoverflow,与永远等待相同。:pyu对“好”有一个奇怪的定义;@frederoverflow,“她就是这么说的”?:)为什么你把它称为“一种”习惯用法,当STL(它是C++规范的一部分)使用它时?@斯维克,它比任何东西都更像是短语的转折点,不管我编辑过什么:
std::stringstream ss;
int age = 25;
ss << "So you must be " << age << " years old.";
StringBuilder sb = new StringBuilder();
int age = 25;
sb.Append("So you must be ").Append(age).Append(" years old");
sb.AppendFormat("So you must be {0} years old", age);