可能重复:
无法从静态上下文引用非静态变量(java)
public class DemoJava {
public class Hello {
void fun()
{
System.out.println("This is static fun man!!");
}
}
public static void main(String[] args) {
Hello hello = new Hello();
hello.fun();
}
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,它会给我一个错误,因为我试图从静态方法访问非静态类.精细.例如,如果我Hello在另一个文件中有相同的类,并且我做同样的事情,它不会给我一个错误.
即使在这种情况下,我们也试图从静态方法访问非静态类.但这并没有给出任何错误.为什么?
这是一个代码片段。我对内部缓冲的工作方式感到困惑。
while(true)
{
cout << "Enter a character: ";
cin.ignore(3, '\n');
ch = cin.get(); // ch is char type
cout << "char: ch: " << ch << endl;
}
Run Code Online (Sandbox Code Playgroud)
实际上cin.ignore(3, '\n')忽略前三个字符,然后获取下一个直接字符。到那一点就好了。因为,我把它保持在一个while循环中,我试图检查ignore()and的行为get()。例如,我检查的输出是
Enter a character: abcd
char: ch: d
Enter a character: efgh
char: ch: e
Enter a character: ijkl
char: ch: i
Enter a character: mnopq
char: ch: m
Enter a character: char: ch: q
Enter a character:
Run Code Online (Sandbox Code Playgroud)
只是为了检查缓冲,我故意给了 4 个字符而不是 1 …
注意:只有 C++ 有类似的帖子,我没有找到任何关于 C 的有用帖子。
我想设置具有相同值的元素数组。当然,这可以简单地使用 for 循环来实现。
但是,这会消耗很多时间。因为,在我的算法中,这个具有相同值的设置数组发生了很多次。有没有什么简单的方法可以在 C 中实现这一点。
std::ifstream file(localPath.c_str(), std::ifstream::binary);
file.seekg(0, std::ifstream::beg);
while(file.tellg() != -1)
{
char *p = new char[1024];
bzero(p, 1024);
file.read(p, 1024);
printf("%ld\n", file.gcount());
n = send(fd, p, strlen(p), 0);
if (n < 0) {
error("ERROR writing to socket");
} else {
printf("---------%d\n", n);
}
delete p;
}
file.close();
Run Code Online (Sandbox Code Playgroud)
实际上我试图发送的图像是png(大小:27892bytes)就读取而言,每个字节都被正确读取.但是,在将它们写入套接字时,只写入了几个字节.需要帮助.
提前致谢.:)
例如,我有字符串的静态声明
std::string s("test");
Run Code Online (Sandbox Code Playgroud)
将为字符串动态分配内存.当字符串s超出范围时,为字符串分配的内存将被释放?
的情况下 std::map
std::map <std::string, std::string> testMap;
Run Code Online (Sandbox Code Playgroud)
同样,如果这testMap也超出范围,std::string则调用析构函数并释放字符串的内存?
评论 ?提前致谢 :)
c++ ×3
arrays ×1
c ×1
class ×1
file-io ×1
input-buffer ×1
inputstream ×1
java ×1
memory ×1
webserver ×1