Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从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 - Fatal编程技术网

从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);