C++ 返回字符串不断出现垃圾

2024-02-27

为什么这里的返回字符串上有各种垃圾?

string getChunk(ifstream &in){
char buffer[5];
for(int x = 0; x < 5; x++){
    buffer[x] = in.get();
    cout << x << " " << buffer[x] << endl;
}
cout << buffer << endl;
return buffer;
}

ifstream openFile;
openFile.open ("Bacon.txt");
chunk = getChunk(openFile);
cout << chunk;

即使我的调试表明我的缓冲区正在填充正确的字符,我也会在字符串中收到大量垃圾,其中末尾有垃圾。

谢谢,c++比Java难多了。


您需要 NULL 终止缓冲区。将缓冲区大小设置为 6 个字符并对其进行零初始化。像现在一样只填充前 5 个位置,保留最后一个位置。

char buffer[6] = {0};  // <-- Zero initializes the array
for(int x = 0; x < 5; x++){
    buffer[x] = in.get();
    cout << x << " " << buffer[x] << endl;
}
cout << buffer << endl;
return buffer;

或者,保持数组大小相同,但使用字符串构造函数 http://en.cppreference.com/w/cpp/string/basic_string/basic_string这需要一个char *以及从源字符串中读取的字符数。

char buffer[5];
for(int x = 0; x < 5; x++){
    buffer[x] = in.get();
    cout << x << " " << buffer[x] << endl;
}
cout << buffer << endl; // This will still print out junk in this case
return string( buffer, 5 );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 返回字符串不断出现垃圾 的相关文章

  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • 为什么要序列化对象需要 Serialized 属性

    根据我的理解 SerializedAttribute 不提供编译时检查 因为它都是在运行时完成的 如果是这样 那么为什么需要将类标记为可序列化呢 难道序列化器不能尝试序列化一个对象然后失败吗 这不就是它现在所做的吗 当某些东西被标记时 它会
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • 对齐 GridView 中的行值

    我需要在 asp net 3 5 中右对齐 gridview 列中的值 我怎样才能做到这一点
  • 显示异常时的自定义错误消息:从客户端检测到潜在危险的 Request.Form 值

    我在我的 Web 应用程序中使用 ASP NET 的登录控件 当发生此异常时 我想在标签上显示一种有趣的错误类型System Web HttpRequestValidationException A potentially dangerou
  • 如何从网站下载 .EXE 文件?

    我正在编写一个应用程序 需要从网站下载 exe 文件 我正在使用 Visual Studio Express 2008 我正在使用以下代码 private void button1 Click object sender EventArgs
  • C 语言中 =+(等于加)是什么意思?

    我碰到 与标准相反 今天在一些 C 代码中 我不太确定这里发生了什么 我在文档中也找不到它 In ancientC 版本 相当于 它的残余物与最早的恐龙骨头一起被发现 例如 B 引入了广义赋值运算符 使用x y to add y to x
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • Qt 创建布局并动态添加小部件到布局

    我正在尝试在 MainWindow 类中动态创建布局 我有四个框架 它们是用网格布局对象放置的 每个框架都包含一个自定义的 ClockWidget 我希望 ClockWidget 对象在调整主窗口大小时相应地调整大小 因此我需要将它们添加到
  • 基于xsd模式生成xml(使用.NET)

    我想根据我的 xsd 架构 cap xsd 生成 xml 文件 我找到了这篇文章并按照说明进行操作 使用 XSD 文件生成 XML 文件 https stackoverflow com questions 6530424 generatin
  • 将代码拆分为标头/源文件

    我从 Asio 的示例页面中获取了以下代码 class tcp connection public boost enable shared from this
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • 为什么拆箱枚举会产生奇怪的结果?

    考虑以下 Object box 5 int int int box int 5 int nullableInt box as int nullableInt 5 StringComparison enum StringComparison
  • 剪贴板在 .NET 3.5 和 4 中的行为有所不同,但为什么呢?

    我们最近将一个非常大的项目从 NET Framework 3 5 升级到 4 最初一切似乎都工作正常 但现在复制粘贴操作开始出现错误 我已经成功制作了一个小型的可复制应用程序 它显示了 NET 3 5 和 4 中的不同行为 我还找到了一种解
  • 转到定义:“无法导航到插入符号下的符号。”

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我今天突然开始在我的项目中遇到一个问题 单击 转到定义 会出现一个奇怪的错误 无法导航到
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • 使用 CSharpCodeProvider 类编译 C# 7.3 的 C# 编译器版本是什么?

    我想使用 Microsoft CSharp CSharpCodeProvider 类来编译 C 7 3 代码 编译器版本在 IDictionary 中指定 在创建新的 CSharpCodeProvider 时将其作为输入 例如 Compil
  • 带重定向标准流的 C# + telnet 进程立即退出

    我正在尝试用 C 做一个 脚本化 telnet 项目 有点类似于Tcl期望 http expect nist gov 我需要为其启动 telnet 进程并重定向 和处理 其 stdin stdout 流 问题是 生成的 telnet 进程在
  • 实例化 Microsoft.Office.Interop.Excel.Application 对象时出现错误:800700c1

    实例化 Microsoft Office Interop Excel Application 以从 winforms 应用程序生成 Excel 时 出现以下错误 这之前是有效的 但突然间它停止工作了 尽管代码和 Excel 版本没有变化 我
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop

随机推荐

  • 所有页面/视图都需要 Blazor /Pages 文件夹吗?

    使用默认的 Blazor helloworl 应用程序 我将 FetchData razor 页面复制到单独的自定义文件夹中 结果 页面未正确呈现 页面正在占用 整个屏幕 导航菜单消失了 问题 blazor 页面 视图必须位于 Pages
  • 如何在不使用任何算术运算的情况下求 x mod 15?

    假设我们得到一个无符号整数 并且不使用任何算术运算符 即 or 我们要找到x mod 15 我们可以使用二进制位操作 据我所知 我是根据两点得出这个结论的 a a mod 15 a mod 16 for a lt 15 Let a x mo
  • 从 Firefox 的缓存中读取脚本标签的来源

    我正在向我的应用程序添加一些错误报告 我希望能够报告类中的方法名称 即使该函数可能是匿名的 到目前为止 我的解决方案涉及通过使用 XmlHttpRequest 加载脚本标签来读取脚本标签的源代码 我的问题是 Firefox 不会从缓存加载
  • 如何管理露天的访问权限

    大家好 提前感谢您的帮助 我正在尝试在露天配置访问权限 但现在陷入了一个场景如果有人定义实现此功能的正确方法 那将会有很大帮助现在我的问题是 我想创建一个网站 所有用户都可以访问 然后将在该站点中创建文件夹和子文件夹 如果需要 我准备自定义
  • K 最近邻算法 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 使用 KNN 算法 假设 k 5 现在我尝试通过获取 5 个最近的邻居来对未知对象进行分类 如果确定 4 个最近邻居后 接下来的 2 个
  • 将 Angular 7 部署到 github 页面

    我有一个简单的 Angular7 应用程序 它只有两条路线 主要是 文章 如果你在本地测试它 它会起作用 但是当你放到 github 页面上时 它只会加载页面的 css 我按照以下角度文档进行部署文档 https angular io gu
  • 在C#中获取主目录的路径?

    好的 我已经查过了Environment SpecialFolder 但里面没有任何东西 我想在C 中获取当前用户的主目录 例如 c documents and settings user在XP下 c users user在 Vista 下
  • 如何找到给定数组中总和为“N”的所有匹配数字

    我的目标是找到所有可能的组合 总和达到给定的总数 例如 如果数组是 2 59 3 43 5 9 8 62 10 4 如果总数为 12 则可能的组合为 2 10 3 9 8 4 5 3 4 这是我编写的第一组代码 想知道对此可以进行的最佳改进
  • 跨源请求被阻止:同源策略不允许读取 http://........ 的远程资源

    我正在尝试使用 ajax 主要通过 javascript 从 Web 应用程序与企业应用程序进行通信 我尝试了很多方法来解决这个问题但没有成功 我在那里看到了几个在线 httppost 工具 我可以看到响应文本 但我这边并没有发生这种情况
  • 如何在 iframe 中正确显示 SSRS 站点

    I have been working on a project where I need to load a ssrs site within an iframe The iframe is acutally using the tele
  • android webview 中的 onShowFileChooser() 只能运行一次

    我需要从设备中选取图像并将其上传到服务器 第一次 当我选择图像时 onShowFileChooser 被调用并且一切正常 但是 当我尝试再次单击上传时 onShowFileChooser 永远不会被调用 但它适用于非棒棒糖设备 每当我单击上
  • 无法从 Google Places API 获取特殊营业时间

    特别营业时间在以下位置进行营销 记录谷歌我的商家 see https support google com business answer 6303076 https support google com business answer 6
  • Java时间解析“Jun 26th 2021, 04:30:15 pm NY”

    我有一个看起来像这样的字符串 String str Jun 26th 2021 04 30 15 pm NY 我想将其转换为ZonedDateTime 为此我使用DateTimeFormatterBuilder DateTimeFormat
  • 显式非单参数构造函数

    谁能解释为什么非单参数构造函数标记为显式编译 据我了解 这在这里绝对是无用的关键字 那么为什么它编译时没有错误呢 class X public explicit X int a int b 在 C 03 中 在这种特殊情况下 标记两个参数构
  • wxWidgets:如何捕捉wxListCtrl上的左键单击?

    我想将复选框添加到 wxListCtrl 这工作正常 只是当鼠标单击项目时似乎没有 EVT LIST ITEM CLICK 或 EVT LIST ITEM LEFT CLICK 事件来捕获 以便可以切换图像 有右键单击和中键单击的事件 但没
  • PHP CURL - 如何判断请求的整个文件是否未完全下载

    我使用 CURL 和代理来获取一些 xml 文件 有时当我尝试加载 使用 xml simplexml load string 时 只有部分 XML 文档会通过并失败 我想像 if curl errno ch error curl error
  • jQuery - 即使单击列表也会触发,但不会触发嵌入其中的复选框

    我正在制作一个简单的网络应用程序 在一部分中 我动态创建了一个列表 然后我有一个事件 当单击列表中的任何元素时会触发 document on click list not checkbox function console log list
  • 递归块过早释放

    我写了一个递归块如下these http ddeville me 2011 10 recursive blocks objc 指导方针 NSMutableArray groups NSMutableArray arrayWithArray
  • 从 Dns.GetHostEntry() 获取 IPv4 地址

    我这里有一些代码在 IPv4 机器上运行得很好 但在我们的构建服务器 IPv6 上却失败了 简而言之 IPHostEntry ipHostEntry Dns GetHostEntry string Empty GetHostEntry 的文
  • C++ 返回字符串不断出现垃圾

    为什么这里的返回字符串上有各种垃圾 string getChunk ifstream in char buffer 5 for int x 0 x lt 5 x buffer x in get cout lt lt x lt lt lt l