如下是一个简单的测试代码,实现字符串格式的数字加法:
//add.cc
#include <node.h>
#include <v8.h>
#include <iostream>
#include <windows.h>
#define MAX_LEN 2048000
using namespace v8;
using std::cout;
using std::endl;
Handle<Value> Max(const Arguments& args)
{
HandleScope scope;
if (args.Length() < 2)
{
ThrowException(Exception::TypeError(String::New("Wrong number of arguments")));
return scope.Close(Undefined());
}
if (!args[0]->IsString() || !args[1]->IsString())
{
ThrowException(Exception::TypeError(String::New("Wrong arguments")));
return scope.Close(Undefined());
}
char szTemp1[MAX_LEN] = {0};
char szTemp2[MAX_LEN] = {0};
Local<String> str1 = args[0]->ToString();
Local<String> str2 = args[1]->ToString();
str1->WriteUtf8(szTemp1);
str2->WriteUtf8(szTemp2);
Local<Number> num = Number::New(atoi(szTemp1) + atoi(szTemp2));
return scope.Close(num);
}
void Init(Handle<Object> exports)
{
exports->Set(String::NewSymbol("add"),FunctionTemplate::New(Max)->GetFunction());
}
NODE_MODULE(add, Init)
//test.js
var addon = require('./build/Release/add');
console.log(addon.add('3','4'));
发现把add.cc中的MAX_LEN改小一点就没问题了,但实际项目中,需要c++中定义很大的字符串,这个要怎么解决呢?请各位大神帮帮忙!不胜感激!