小编Cha*_*had的帖子

javascript字符串类型和字符串对象之间的区别?

我一直在搞乱ECMA-262标准(ECMAScript语言规范,第3版,如果它对此很重要 - 我没有发现第3版和第5版字符串类型/字符串对象之间有任何区别).

有一件事令我感到困惑:String Type和String Object之间的区别.是的,我知道String Type是一个16位UTF-16单元序列,而String对象是一个内置对象,其内部Class属性设置为"String",其内部Value属性设置为字符串类型的值.

但是阅读规范,字符串类型似乎没有暴露任何方法; 也就是说,它只是一个没有任何附加属性的值.拿这个代码,一切都完全符合预期:

document.writeln(typeof "foo"); // 'string'
document.writeln(typeof new String("foo")); // 'object'
Run Code Online (Sandbox Code Playgroud)

第一种类型是实际的String Type,第二种是Object Type(它是String类的对象,但它的数据类型是object).但是,看看这个:

"foo".charAt(0);

fooStrObj = new String("Foo");
fooStrObj.charAt(0);
Run Code Online (Sandbox Code Playgroud)

它们似乎都暴露了相同的功能,但ECMA-262标准中定义的字符串类型没有任何功能; 它公开的所有函数都来自String.prototype对象(我看不到对String Type的神奇地暴露了ECMA-262标准中String.prototype对象的所有属性和函数这一事实的引用).那么String Type类型的值是否会自动提升为String对象,并将原始String Type值作为其内部Value属性?

如果他们被完全相同(这似乎是他们所有的意图和目的),为什么有两种不同的方式来表示一个字符串

javascript

64
推荐指数
2
解决办法
1万
查看次数

即使重定向stdout和stderr,Unix程序如何在屏幕上显示输出?

我在我的Ubuntu机器上运行了一个程序(实际上是valgrind),并将stdout和stderr重定向到不同的文件.我很惊讶地看到屏幕上出现一条短信 - 这怎么可能?我怎么能在C++程序中自己做到这一点?

编辑:这是我使用的命令,输出:

$ valgrind ./myprogram > val.out 2> val.err
*** stack smashing detected ***: ./myprogram terminated
Run Code Online (Sandbox Code Playgroud)

EDIT2:玩了一下,事实证明myprogram,而不是valgrind,正在打印消息,并且如下面的回答,它看起来像gcc堆栈粉碎检测代码正在打印到/ dev/tty

c++ linux

20
推荐指数
1
解决办法
1213
查看次数

g ++"调用"一个没有括号的函数(不是f()而是f;).为什么它总是返回1?

在c ++(GNU GCC g ++)中,我的代码是"调用"没有()的函数.该功能无效,但编译正常.

更令人惊讶的是,代码总是返回1 ...

有什么解释吗?

我希望函数名称只是一个常规指针,但似乎有点不同......

我是偶然得到所有1的吗?

#include <iostream>
using namespace std;

void pr ()
{
    cout << "sth";
}

int main()
{

pr;
cout << pr;  // output: 1
cout << *pr; // output: 1
cout << &pr; // output: 1

}
Run Code Online (Sandbox Code Playgroud)

c++ g++

15
推荐指数
2
解决办法
4134
查看次数

了解fflush()的必要性以及与之相关的问题

以下是使用fflush()的示例代码:

#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <io.h>

void flush(FILE *stream);

int main(void)
{
   FILE *stream;
   char msg[] = "This is a test";

   /* create a file */
   stream = fopen("DUMMY.FIL", "w");

   /* write some data to the file */
   fwrite(msg, strlen(msg), 1, stream);

   clrscr();
   printf("Press any key to flush DUMMY.FIL:");
   getch();

   /* flush the data to DUMMY.FIL without closing it */
   flush(stream);

   printf("\nFile was flushed, Press any key to quit:");
   getch();
   return 0;
}

void flush(FILE *stream)
{ …
Run Code Online (Sandbox Code Playgroud)

c fflush

13
推荐指数
1
解决办法
4万
查看次数

gdb -i = mi是什么意思?

从emacs启动gdb时,emacs说gdb应该以启动方式启动

gdb -i=mi
Run Code Online (Sandbox Code Playgroud)

选项-i没有在GDB手册页中定义.如果使用选项-i = mi从命令行调用gdb ,则它可以正常工作.所以它必须特定于gdb.-i选项的文档在哪里?

linux emacs gdb emacs24

12
推荐指数
1
解决办法
2937
查看次数

C++对象作为返回值:复制还是引用?

我想测试当函数的返回值是一个对象时C++的行为.我做了一个小例子来观察分配了多少字节,并确定编译器是否复制了对象(比如当对象作为参数传递时)或者返回某种引用.

但是,我无法运行这个非常简单的程序而且我不知道为什么.错误说:"某些dbgdel.cpp文件中的"调试断言失败!表达式:BLOCK_TYPE_IS_INVALID".Project是一个win32控制台应用程序.但我很确定这段代码有问题.

class Ctest1
{
public:
   Ctest1(void);
   ~Ctest1(void);

   char* classSpace;
};

Ctest1::Ctest1(void)
{
   classSpace = new char[100];
}

Ctest1::~Ctest1(void)
{
   delete [] classSpace;
}

Ctest1 Function(Ctest1* cPtr){
   return *cPtr;    
}

int _tmain(int argc, _TCHAR* argv[])
{
   Ctest1* cPtr;

   cPtr=new Ctest1();


   for(int i=1;i<10;i++)
      *cPtr = Function(cPtr);


   delete cPtr;

   return 0;
   }
Run Code Online (Sandbox Code Playgroud)

c++ memory return object

10
推荐指数
3
解决办法
1万
查看次数

如何在make recipe中使用for循环

我想使用循环来查找一些文件并重命名它们:

  for i in `find $@  -name *_cu.*`;do mv $i "$(echo $i|sed s/_cu//)"
  done
Run Code Online (Sandbox Code Playgroud)

这适用于shell.但是如何在makefile配方中执行此操作?

shell makefile recipe

8
推荐指数
2
解决办法
2万
查看次数

有没有办法让Perforce恢复待处理集成的未更改文件?

我正准备将我们的"Dev"分支集成到我们的"测试"分支中,为即将发布的版本做准备.

对于我们的上一个版本,在初始集成之后,我们确定有一些我们不想发布的更改.我在Testing分支中回滚了一些文件,并注释掉了其他文件的部分内容.这些文件中的许多文件在Dev分支中没有变化,因此就Perforce而言,它们已经被集成并且是很好的.

显然,我可以跟踪更改列表并取消回滚这些文件.我还可以将违规文件与"-f"选项集成,以忽略集成历史记录.

但我希望能够"自动"找到一种方法.我尝试将整个分支与"-f"集成,解析,然后还原未更改的文件,但这只是给出了消息:<filename> has pending integrations, not reverted.

有没有办法让Perforce恢复正在等待集成的未更改文件?我应该采取其他方法吗?

perforce p4v

8
推荐指数
1
解决办法
9249
查看次数

"解决之前被篡改"意味着文件解析?

我正在尝试将main流合并到development流,并且需要解析一些文件.解决方法我有一个错误:

文件路径在解析之前被篡改 - 编辑或还原.

我试图像这里描述的那样解决它,但没有成功.这是verify命令告诉我的:

目标文件
路径 - 分支更改9070(文本)A3269695246A89D21F341D8A5BB70B5B

for source
filepath - edit change 22793(text)171BA2F3E0FFCEF3F7A34FDB7A2CEF69
filepath - add change 9049(text)A3269695246A89D21F341D8A5BB70B5B

什么branch change,edit change,add change是什么意思?为什么MD5相同但我仍然有错误?怎么解决?

perforce

8
推荐指数
2
解决办法
7201
查看次数

纤维/未来实际上做了什么?

下面的代码行是做什么的?

Npm.require('fibers/future');
Run Code Online (Sandbox Code Playgroud)

我在网上看了一些例子,我遇到了一些这样的事情:

Future = Npm.require('fibers/future');
var accessToken = new Future();
Run Code Online (Sandbox Code Playgroud)

accessToken在这种情况下,变量会是什么?

node.js npm meteor node-fibers

8
推荐指数
1
解决办法
2989
查看次数

标签 统计

c++ ×3

linux ×2

perforce ×2

c ×1

emacs ×1

emacs24 ×1

fflush ×1

g++ ×1

gdb ×1

javascript ×1

makefile ×1

memory ×1

meteor ×1

node-fibers ×1

node.js ×1

npm ×1

object ×1

p4v ×1

recipe ×1

return ×1

shell ×1