我创建了一个包含 256 个字符的文本文件,文本文件的第一个字符是 ASCII 值 0,文本值的最后一个字符是 ASCII 值 255。中间的字符从 0 到 255 均匀递增。所以字符 #27 是 ASCII 值 27。字符 #148 应该是 ASCII 值 148。
我的目标是读取此文本文件的每个字符。
我试过用 cin 阅读这个。我尝试了 cin.get() 和 cin.read(),它们都应该读取未格式化的输入。 但是在读取第 26 个字符时都失败了。我想当我使用 unsigned char 时,cin 说它正在读取 read in 255 ,这根本不是真的。当我使用普通签名的 char 时,cin 表示它正在读取 -1。它应该读入与 ASCII 26 等效的任何字符。也许 cin 认为它命中了 EOF?但是我之前在单独的 StackOverflow 帖子上读到 EOF 不是一个可以写的实际字符。所以我不知道为什么 cin 对代表整数 -1 或整数 255 的字符值咳嗽。有人可以告诉我我做错了什么,为什么,最好的解决方案是什么,为什么?
没有太多具体的代码可以粘贴。我尝试了几种不同的非工作组合,所有组合都涉及 cin.get() 或 cin.read() 与 char 或unsigned char 并在两者之间调用转换为 char 和 int。我没能读完第 26 个字符,除了这个:
unsigned char character;
while ( (character = (unsigned char)cin.get()) != EOF) { ... }
有趣的是,虽然这并没有在第 26 个字符处停止我的 while 循环,但它也没有继续前进。看起来像 cin,无论是 cin.get() 还是 cin.read() 都拒绝在它到达下一个字符的那一刻前进检测到它不喜欢的东西。我也知道存在类似 cin.ignore() 的东西,但我的输入是不可预测的;也就是说,我的文本文件的这 256 个字符只是一个测试用例,真正的输入是相当随机的。这是一个更大的家庭作业的一部分,但这个具体问题与作业无关;我只是停留在过程的一部分。
注意:我是从标准输入流读取的,而不是特定的文本文件。似乎仍然没有直接的解决方案。我不敢相信以前没有在 cin 上这样做过。
更新:
在 Windows 上,它在第 26 个字符后停止,可能是因为 Ctrl-Z 的缘故。我不太关心这个问题。它只需要在 Linux 上运行。
不过,在 Linux 上,它读取从 0 到 127 的所有字符。但它似乎并没有读取从 127 到 255 的扩展 ASCII 字符。有一个“解决方案”程序可以产生我们应该模仿的输出,并且该程序能够以某种方式读取所有 255 个字符。
问题:如何使用 cin 读取所有 255 个 ASCII 字符?
使用:
int characterInt;
unsigned char character;
while ( (characterInt = getchar()) != EOF )
{
// 'character' now stores values from 0 - 255
character = (unsigned char)(characterInt);
}
最佳答案
我猜你是在 windows 上。在 Windows 平台上,字符 26 是 ctrl-z,它在控制台中用于表示文件结尾,因此 iostream 认为您的文件在该字符处结束。
它只会在 cin 使用的文本模式下执行此操作,如果您以二进制模式打开 steam,它不会执行此操作。
关于读取超过 127 个 ASCII 值时 C++ cin 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15008907/
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
好的,所以我的目标是轻松地将一些数据保存到磁盘以备后用。您如何简单地写入然后读取一个对象?所以如果我有一个简单的类classCattr_accessor:a,:bdefinitialize(a,b)@a,@b=a,bendend所以如果我从中非常快地制作一个objobj=C.new("foo","bar")#justgaveitsomerandomvalues然后我可以把它变成一个kindaidstring=obj.to_s#whichreturns""我终于可以将此字符串打印到文件或其他内容中。我的问题是,我该如何再次将这个id变回一个对象?我知道我可以自己挑选信息并制作一个接受该信
我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类
我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:
我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的
我正在尝试在Rails上安装ruby,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf
文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,