草庐IT

c++ - 将字符串写入 ostream

当我尝试编译下面的代码时(在使用llvm-g++-4.2(GCC)4.2.1的Qt4.8中),出现以下错误:../GLWidget.cpp:24:instantiatedfromhere../GLWidget.cpp:24:error:explicitinstantiationof'std::basic_ostream&std::operator&,conststd::basic_string&)[with_CharT=char,_Traits=std::char_traits,_Alloc=std::allocator]'butnodefinitionavailable此错误是什么意

C++:在 C 或 C++ 中以普通文本模式(非二进制)写入 vector 文件以输出最快

编写std::vector的最快方法是什么?(或与此相关的任何连续容器)到不是二进制文件(即文本模式)的文件?在我的例子中,速度很重要,vector会不断生成并写入文件。在二进制模式下,自std::vector以来相当简单在内存中是连续的。请注意,我不想依赖Boost序列化。(尽管如果这是最优雅的方式,我可能会被迫这样做……)。另外我需要一系列字符来分隔元素(即空格)这就是我目前正在做的事情(是一个例子),但这是非常通用的,即使我写了一个运算符对于vector.是否有此代码的更优化版本,或者我只剩下这个?std::ofstreamoutput(...);...templatewrite

c++ - 循环写入文件时遇到问题

我在让这个程序正常工作时遇到了问题。该程序提出一个问题,然后将该问题写入一个文件。然后它会询问您是否要输入另一个问题。如果您点击“1”,它将循环并要求您输入另一个问题。该程序本身运行和关闭没有任何问题。问题是无论我输入多少问题,它只会将第一个问题写入文件。其余由空行代替。如果我关闭程序并重新运行它,它将再次只写一行。我确定cin.ignore与它有关,但我不知道如何修复它。请帮忙。#include#include#include#includeusingnamespacestd;intmain(){stringquestion;intx;ofstreama_file("test.txt

c++ - 其他线程是否会在合理的时间内看到对 `volatile` 字大小变量的写入?

当询问morespecificproblem时我发现这是人们不确定的核心问题。可以做出以下假设:CPU确实使用了像MESI(F)这样的缓存一致性协议(protocol)(例如:x86/x86_64和ARMv7mp)假定变量的大小由处理器自动写入/读取(对齐和native字大小)变量被声明为volatile问题是:如果我在一个线程中写入变量,其他线程会看到变化吗?其他线程看到变化的时间范围的数量级是多少?您是否知道缓存一致性不足以确保跨CPU/跨核心可见性的架构?问题不是:使用这样的变量安全吗?关于重新排序问题关于C++11原子这可能被认为是InC/C++,arevolatilevari

c++从二进制文件读取/写入类

我需要写一个类到一个二进制文件,然后我需要读回它。我有Triangle和BinaryFile类,以及其他一些类。我不确定我是写错了还是读错了。读取时出现错误。调试后,我认为它为我的私有(private)变量获取了不合适的数据。如果有人能给我一些关于如何使其正常工作的建议,我将非常高兴。我不确定是否应该粘贴整个代码,所以我会给你一小段代码。以防万一,这是我的源代码的下载链接:https://my.pcloud.com/publink/show?code=XZJ7CYZbsLWLglqV5p83csijcEUTFqqpM3k我是编程新手,英语不是很好,所以我为我的错误提前道歉。classP

c++ - 将 C++ 接口(interface)写入动态分配的 C 结构

简介:我正在编写一个C++11应用程序,它广泛使用了遗留的C代码库。遗留代码中一个非常常见的模式是存在一些structLegacyStruct这是通过诸如之类的方法构造和销毁的build_struct(LegacyStruct*L,intarg1,intarg2)free_struct(LegacyStruct*L)基本上是构造函数/析构函数。遗留代码库中的所有权模型非常unique_ptr-esque,所以我的目标是将它包装在一个内存安全的、支持RAII的包装类中,如下所示:classWrapper{public:Wrapper::Wraper():handle(){}Wrapper

c++ - 在 C++ 中将二进制数据写入 fstream

问题我有一些结构要写入二进制文件。它们由来自cstdint的整数组成,例如uint64_t.有没有办法将它们写入二进制文件,而不需要我手动将它们拆分为char的数组?并使用fstream.write()函数?我尝试过的我天真的想法是,c++会弄清楚我有一个二进制模式的文件和会将整数写入该二进制文件。所以我尝试了这个:#include#include#includeusingnamespacestd;intmain(){fstreamfile;uint64_tmyuint=0xFFFF;file.open("test.bin",ios::app|ios::binary);file但是,这

c++ - 是什么导致在电脑崩溃之前将空字符写入文件?

我们有一个应用程序在数千台相同的机器上运行。相同的操作系统、相同的硬件、相同的应用程序安装。在极少数情况下,机器会锁定。Alt选项卡、ctrl-alt-del、应用程序都没有响应。检查我们的应用程序日志文件后,一系列空字符被写入末尾,作为崩溃前的最后数据。我希望利用这个事实来调试锁定。我的猜测是写入的空字符数相当于我需要为我的日志语句分配的空间,但内容从未真正写入磁盘。我还猜测发生了磁盘IO问题,阻止写入,当然还有操作系统锁定。我无法证实这一点。所以我想我的问题是-你有没有见过这样的情况,它是如何发生的,你会如何解决它? 最佳答案

java - 从 C/C++ 在内存中写入一个缓冲区,并在没有 JNI 的情况下在 java 中从中读取

我有一个问题,这是否可能以及如何实现?从使用Java从C/C++创建的内存缓冲区中读取字节?我的想法是使用JNI在C++中启动一个循环,将字节写入缓冲区,只将缓冲区的方向发送给Java,然后Java在另一个循环中从中读取字节。目标是减少JNI函数的调用,因为我注意到它们会降低性能。我想知道我必须在Java中使用哪些类以及在C++中使用哪些函数。非常感谢您 最佳答案 您可以使用ByteBuffer。最简单的方法是使用ByteBuffer.allocateDirect()使用Java分配的地址。如果你必须使用C提供的地址,你可以更改地址

C++ 循环遍历目录中的文件并写入不同的目录

我正在尝试修改一些现有的C++代码以满足我的需要,但之前从未使用过C++,我遇到了一些困难。我的目标是:-->timeandmemory-intensiveprocessesforpreparationforeachfileindirectory:openfile;generateataggedrepresentation;//thecurrentcodejustdoesthiswritefile;//differentdirectorybutsamefilename我不想只为每个文件调用C++程序(例如,使用shell脚本)的原因是,在运行以下代码之前,会执行时间和内存密集型预处理步