在我的程序中,我有以下格式的"服务器地址"列表: host[:port] 这里的支架,指示port是可选的. host可以是主机名,ipv4或ipv6地址(可能在"括号封闭"符号中). port,如果存在可以是数字端口号或服务字符串(例如:" http"或" ssh"). 如果存在port,并且host是一个IPv6地址,host 必须在"括号添加"符号(示例:[::1]) 中 这是一些有效的示例: localhost localhost:11211 127.0.0.1:http [::1]:11211 ::1 [::1] 和无效示例: ::1:80 // Invalid: Is this the IPv6 address ::1:80 and a default port, or the IPv6 address ::1 and the port 80 ? ::1:http // This is not ambigous, but for s
以下是关于 parsing 的编程技术问答
如果我有一个包含逗号分隔数字列表的std ::字符串,那么解析数字并将它们放入整数数组中的最简单方法是什么? 我不想将其概括为解析其他任何内容.只是一串简单的逗号分隔数字,例如" 1,1,1,1,2,1,1,1,0". 解决方案 一次输入一个数字,并检查以下字符是否为,.如果是这样,请丢弃. #include #include #include #include int main() { std::string str = "1,2,3,4,5,6"; std::vector vect; std::stringstream ss(str); for (int i; ss >> i;) { vect.push_back(i); if (ss.peek() == ',') ss.ign
我正在尝试解析一些JSON,但我遇到了一个问题.我正在尝试获取该物品的名称. json:我尝试的代码: WebClient wc = new WebClient(); string theItems = wc.DownloadString(string.Format("http://steamcommunity.com/profiles/{0}/inventory/json/730/2/", steamUser.SteamID.ConvertToUInt64())); dynamic dynObj = JsonConvert.DeserializeObject(theItems); Console.WriteLine("{0}", dynObj.rgDescriptions,dynObj); foreach (var name in dynObj) { foreach (var subname in name) { Console.WriteLine
考虑此示例: #include #include #include #include int main() { std::string sen = "abc def ghi jkl"; std::istringstream iss(sen); std::vector // declaration in question vec(std::istream_iterator(iss), std::istream_iterator()); std::copy(vec.begin(), vec.end(), std::ostream_iterator(std::cout, "\n")); } 编译器在调用std
我正在开始为我的编程语言编写词汇分析仪. 此语言中的字符串文字从"开始,并在遇到Unscaped "时结束.除了逃生序列(通常的\n s,\t s,\" s et et eck)外,还保留了内部的所有内容(包括新线) >). 这是我到目前为止写的代码: %{ #include #define YY_DECL extern "C" int yylex() std::string buffstr; %} %x SSTATE %% \" { buffstr.clear(); BEGIN(SSTATE); } \\[0-9]{1,3} { unsigned code = atoi(yytext + 1);
可能的重复: 如何将字符串解析为c ++中的int?/a> 如何将C ++字符串转换为INT? 假设您期望字符串中有实际数字(例如," 1"," 345"," 38944"). 另外,假设您没有提升,您真的想以C ++方式进行,而不是肮脏的旧C方式. 解决方案 #include // st is input string int result; stringstream(st) >> result; 其他解决方案 使用C ++流. std::string plop("123"); std::stringstream str(plop); int x; str >> x; /* Lets not forget to error checking */ if (!str) { // The conversion failed. // Need to do something here.
我想编写一个C程序,该程序从用户中处理一个简单的数学问题,并使用不同的过程来求解每个部分,然后将值发送回父进程.该计划不应关注运营顺序.例如,如果我有问题: 3 + 4 / 7 + 4 * 2 我希望我的程序输出以下内容: Enter problem: 3 + 4 / 7 + 4 * 2 PID 20419 calculated 3+4 as 7 PID 20420 calculated 7/7 as 1 PID 20421 calculated 1+4 as 5 PID 20422 calculated 5*2 as 10 Final result: 10 我在分析要输入的方程式时遇到了一些麻烦.我正在考虑在C中使用getline()方法来帮助我解析输入.这就是我到目前为止的: #include #define MAX_LINE_LENGTH 200 int main() { printf("Enter equation: "
我发现自己最近写了很多解析代码(主要是自定义格式,但这并不重要). 为了增强可重用性,我选择将解析功能基于I/O流,以便可以将它们与boost::lexical_cast> 之类的东西一起使用. 我意识到我从来没有阅读过任何有关如何正确执行此操作的任何内容. 为了说明我的问题,让我们考虑一下我有三个类Foo,Bar和FooBar: a Foo以以下格式用数据表示:string(, ). a Bar以以下格式用数据表示:string[]. a FooBar是一种变体类型,可以容纳Foo或Bar. 现在,假设我为我的Foo>类型写了operator>>(): istream& operator>>(istream& is, Foo& foo) { char c1, c2, c3; is >> foo.m_string >> c1 >> foo.m_x >> c2 >> std
我试图拿一根弦并将其解析为int.我已经阅读了许多答案,似乎使用stoi是最新的方法.在我看来,stoi使用std,但是我得到了Function 'stoi' could not be resolved delpitre using namespace std; #include #include #include #include #include using namespace std; int main(int argc, char* argv[]) { string line = ""; string five = "5"; int number = stoi(five); //Error here with stoi return 0; } 有什么想法是什么原因造成的? 更新: 我正在使用日食.我的旗帜是:-c -fme
我是库的开发人员,我们的旧代码使用sscanf()和sprintf()读取/编写从/到字符串的各种内部类型.我们与使用库的用户遇到了问题,并且具有与我们基于XML文件(" C"语言环境)的语言环境不同.在我们的情况下,这导致了从这些XML文件中解析的不正确值以及在运行时提交的字符串.用户可以直接更改该语言环境,但也可以在不了解用户的情况下更改.如果另一个图书馆内发生了另一个库(例如GTK),那是一个错误报告中的"肇事者",则可能发生这种情况.因此,我们显然想从该地区删除任何依赖,以永久释放这些问题. 我已经在float/double/int/...的背景下阅读了其他问题和答案,尤其是如果它们被角色或位于括号内部的隔离.我们的要求是: 除标准库以外的库中没有依赖性.因此,使用Boost中的任何内容都是没有选项. 必须是线程安全.这是针对特定于区域的特定意义,可以在全球进行更改.这对我们来说真的很糟糕,因此我们的库的线程可能会受到用户程序中另一个线程的影响,这也可能是运行完
C ++标准库是否定义了此功能,还是必须求助于? 我搜索了网络,除了Boost以外什么也找不到任何东西,但是我想我最好在这里问. 解决方案 仅部分部分. c ++ 11 具有内置类型的std::to_string: [n3290: 21.5/7]: string to_string(int val); string to_string(unsigned val); string to_string(long val); string to_string(unsigned long val); string to_string(long long val); string to_string(unsigned long long val); string to_string(float val); string to_string(double val); string to_string(long double val); 返回:每个功
说您有这样的系统: 在 const input = [0, [1, 2, [3, 4, [8, 9], 6, 7], 4], [5, 6, 7], 3, 4, [8, 9], 6, 7, [1], 9] const output = parse(input) console.log(output.join('-')) function parse(input) { const output = [] iterate(input, value => { check(() => isArray(value), () => { // yes array const children = parse(value) output.push(...children) }, () => { // not array check(() => isEven(value), () => {
我目前正在学习语法分析,尤其是自上而下的解析. 我知道术语和自下而上的LR解析器的差异,并且由于自上而下的LL解析器更容易手工实施,因此我期待自己制作. 我看过两种方法: 使用递归函数集合的递归研究. 基于堆栈和表驱动的自动机为 wikipedia wikipedia . 我对后者更感兴趣,因为它的力量和消除了呼叫堆栈.但是,我不明白如何从隐式解析树中构建AST. 此代码示例示例,如果接受语法,则仅给出是/否答案. 我听说过堆栈注释以构建AST,但我不知道如何实施它们.有人可以提供这种技术的实际实施吗? 解决方案 您需要了解背后的概念.您需要了解俯卧撑自动机的概念.了解如何用铅笔在纸上进行计算后,您将能够通过递归下降或堆栈了解多种实现其想法的方法.想法是相同的,当您使用递归下降时,您隐含地具有该程序用于执行的堆栈,其中执行数据与解析自动机数据结合在一起. 我建议您从Ullman(Automata)或Dick Grune教授的课程开始,这
如果我想培训Stanford神经网络依赖解析器的另一种语言,则需要" TreebanklanguagePack"(TLP)(TLP),但是有关此TLP的信息非常有限: 您的树库的特殊性及其包含的语言 如果我使用另一种语言的"树库",该语言遵循与PTB相同的格式,并且我的数据正在使用conll格式.依赖性格式遵循"通用依赖性" UD.我需要这个TLP吗? 解决方案 在当前的Corenlp释放时,TreeBanklanguagePack仅在依赖项解析器中仅用于1)确定输入文本编码和2)确定哪些令牌为标点符号[1]. . 那么,快速解决方案的最佳选择可能是坚持使用UD英语TreebanklanguagePack.您应该通过将属性language指定为"UniversalEnglish"来执行此操作(无论您是通过代码还是命令行访问依赖项解析器).如果您通过CORENLP主入口点使用依赖项解析器,则此属性密钥应为depparse.language. 技术细节
应对放解码器的输入进行哪种处理. 众所周知,我正在使用stanford parser.jar,但也有斯坦福·科伦普(Stanford Corenlp.Jar). 根据Corenlp文档,您可以将要执行的操作作为注释中的输入 中的输入 命令: java -cp "*" -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner,parse,dcoref -file input.txt 要在corenlp中使用解析,我只能通过解析,或者我应该通过除dcoref 以外的所有注释者 即.) java -cp "*" -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,parse -file input.txt
我想使用Stanford Parser创建一个.conll文件以进行进一步处理. 到目前为止,我设法用命令来解析测试句子: stanford-parser-full-2013-06-20/lexparser.sh stanford-parser-full-2013-06-20/data/testsent.txt > output.txt 而不是我想在.conll中使用一个文件.我很确定这是可能的,在文档中提到了这一点(请参阅在这里).我可以以某种方式修改我的命令,还是必须写JavaCode? 感谢您的帮助! 解决方案 如果您正在寻找以CONLL X(CONLL 2006)格式打印出的依赖项,请从命令行尝试一下: java -mx150m -cp "stanford-parser-full-2013-06-20/*:" edu.stanford.nlp.parser.lexparser.LexicalizedParser -outputFormat "penn"
我正在寻找优化斯坦福大学情感管道表现的方法.结果,想要获得句子的情感,但只有包含特定关键字作为输入的句子. 我尝试了两种方法: 方法1:StanfordCorenlp管道用情感注释整个文本 我定义了注释器的管道:令牌,ssplit,parse,情感.我已经在整篇文章中运行了它,然后在每个句子中查找关键字,如果它们在场,请运行一个返回关键字值的方法.我不满意,尽管处理需要几秒钟. 这是代码: List keywords = ...; String text = ...; Map sentenceSentiment = new HashMap(); Properties props = new Properties(); props.setProperty("annotators", "tokenize, ssplit, parse, sentiment"); props.setProperty("pars
我找不到德国和法语的斯坦福大学解析模型:在罐子里没有" dermanpcfg.ser.gz"或" frenchfactored.ser.gz"(stanford-corenlp-3.2.0-models.jar) - 只能说英语. 也已经通过塔格后罐进行了搜索. 在以下网址遇到的同一问题:使用斯坦福·科伦普(Stanford Corenlp)与非英语解析模型? 解决方案 您可以在下载中找到 Stanford Parser .查看型号.jar文件. 其他解决方案 with maven 您可以使用 edu.stanford.nlp stanford-corenlp 3.5.2 edu.stanford.nlp