转换一个字符串的C ++代码

我正在学习C ++,开发一个项目的做法,但现在我想将一个变量(串)的代码,这样,用户有一个包含C ++代码的文件,但我想我的程序读取该文件,并插入入代码,如下所示:

#include <iostream> #include <fstream> #include <string> #include <cstdlib> using namespace std; int main( int argc, char* argv[] ) { ifstream file(argv[ 1 ]); if (!file.good()) { cout << "File " << argv[1] << " does not exist.\n"; return 0; } string linha; while (!file.eof()) { getline(file, linha); if (linha.find("code") != string::npos) { size_t idx = linha.find("\""); //find the first quote on the line while ( idx != string::npos ) { size_t idx_end = linha.find("\"",idx+1); //end of quote string quotes; quotes.assign(linha,idx,idx_end-idx+1); // do not print the start and end " strings cout << quotes.substr(1,quotes.length()-2) << endl; //check for another quote on the same line idx = linha.find("\"",idx_end+1); } } } return 0; }

这里是一个文件〔实施例:

code "time_t seconds;\n seconds = time (NULL);\n cout << seconds/3600;"

但是当我运行程序的时候,不隐蔽的字符串转换成代码,但它打印出到底是什么在引号。

谢谢!

--------------解决方案-------------

你做cout的吧? 所以,很显然它就会显示出来。

也许你正在尝试做的是一些代码注入在这样一个正在运行的进程http://www.codeproject.com/KB/DLL/code_injection.aspx

C ++是编译型语言,而不是一种解释型语言。

所以,这是不可能的程序来读取关于即时C ++代码并执行它,因为这需要代码进行编译。

你想什么做的是实际评估的字符串在运行时。 在C ++或其他非释/即时编译语言这是不直接支持。

你不能做你想要用C ++什么。 为了评估命令行参数,你需要嵌入一个脚本语言到你的程序(Python的似乎是一个很好的例子 - 它并不难)。 该字符串参数可以计算为Python代码。

如果目的是为了执行某些外部提供的脚本,我建议这个脚本被指定为常用的脚本语言之一。 我们很多年前做这个用Perl。 此链接文字dscribes如何。

虽然动态编译和链接C ++代码在技术上是可能这是相当棘手的,结果可能不会太强劲 - 考虑如何lilely它可能是“剧本”的作者误用一个指针和象垃圾一样清除一些重要的事情。

脚本语言通常比C ++更便于采用较少的技术作家

正如其他已指出,C ++一般编译语言,并简单地提供这种没有原生支持。

因为你问它有两种可能的解决方案的问题:

  • 查找和使用C ++解释。 有对此事数计算器的问题,和至少两个这样的个软件存在。 我喜欢CINT。
  • 调用的代码,C ++编译器生成一个动态库,你随后加载并调用。 这会不会是完全一样的例子,但情况下,用户必须提供“可赎回”代码(即一个或多个功能)。

可能的解决方案,你可能就意味着这个问题:

  • 使用扩展语言这样的巨蟒,TCL或卢阿。
分类:C# 时间:2012-12-30 人气:0
本文关键词: C#中,字符串
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.953 (s). 10 q(s)