草庐IT

GNU-getline

全部标签

c++ - C++中getline的缓冲区大小限制

我有一个简单的C++程序,它逐行读取文件。有些行包含超过20000个字符。下面的程序只能读取那些大行的4095个字符。我认为这是因为缓冲区大小限制。读取大行的解决方案是什么?//readingatextfile#include#include#includeusingnamespacestd;intmain(){stringline;ifstreammyfile("new.fasta");if(myfile.is_open()){while(getline(myfile,line)){cout 最佳答案 试试sed${n}p|wc在

c++ - unordered_multimap 在 gnu++11 和 c++0x 中的不同行为

我在不同的编译器上编译了以下程序,并得到了不同的行为,来源:#include#include#includeusingnamespacestd;std::unordered_mapmymap;std::unordered_multimapmymultimap;intmain(){DoAddItem();std::coutfirstsecond;std::coutfirstsecond;std::coutmypair[100];intidx;std::strings1;std::strings2;for(idx=0;idx在RedHatLinux中用g++4.4.6编译如下:g++--s

c++ - 如何使此函数使用 getline 读取字符串并使其与 int 的行为相同?

templateTget(conststring&prompt){cout>ret;returnret;}我不知道如何通过重载来做到这一点;基本上,这适用于任何类型的数据,对吧……我尝试使用typeid(variable).name();并获得字符串变量的输出,并尝试在get函数中创建一个if。但是它没有用。 最佳答案 如您所知,不能仅通过返回值类型来重载函数。我注意到您的类型是默认可构造的,因此我将它们用作默认值为空的函数参数,因此可以通过此默认参数类型重载函数:https://ideone.com/oPSWLC#include#

c++ - 如何使用 std::in 和 getline() 在后台进程中检测从 bash 注入(inject)的输入

我有一个用Cpp编译的二进制文件,代码如下:std::stringinput;getline(std::cin,input);std::cout如果我执行此示例,并在终端中写入“Helloworld!”完美运行:Messagegiven:Helloworld!现在,我启动重定向标准输出的可执行文件:./basicsample>>output/test如果我尝试使用文件描述符注入(inject)输入:echo"Helloworld!">/proc/${PID}/fd/0消息出现在启动进程的终端中:[vgonisanz@foovarbash]$./basicsample>>output/t

c++ - 可移植 C++ 原子交换(Windows - GNU/Linux - MacOSX)

是否有免费的可移植(Windows、GNU/Linux和MacOSX)库提供无锁原子交换功能?如果没有,将如何针对这些平台中的每一个实现?(使用VC++或g++的x86)谢谢 最佳答案 有一个lock-free图书馆待审boost.另外,如果您深入研究boostsmartpointers的来源在库中,您会发现为多个平台内联的原子操作。另一个-英特尔ThreadingBuildingBlocks实现了atomic模板。 关于c++-可移植C++原子交换(Windows-GNU/Linux-

c++ - 这是 getline() 的错误,还是我做错了什么。 getline() 的正确使用方法?

这可能不是一个错误,但我不知道出了什么问题。我的第一个条目在第二次迭代中对str1重复,并且从那时起也是如此。只有第一次迭代顺利。#include#includeusingnamespacestd;intmain(){cout>c;}return0;}输出是:Entertwowords.helloworldthisismrstr:helloworldstr1:thisismrContinue?yhelloworldstr:str1:helloworldContinue?n 最佳答案 添加cin.ignore(std::numeric

c++ - 在程序中一起使用 getline 和 strtok 的问题

在下面的程序中,我打算将文件中的每一行读入一个字符串,分解字符串并显示单个单词。我面临的问题是,程序现在只输出文件中的第一行。我不明白为什么会这样?#include#include#include#includeusingnamespacestd;intmain(){ifstreamInputFile("hello.txt");stringstore;char*token;while(getline(InputFile,store)){cout 最佳答案 我是C++的新手,但我认为另一种方法可能是:while(getline(Inp

涉及 getline() 和循环的 C++ 问题

我正在做一项学校作业,现在正在用头撞墙试图弄清楚为什么我的程序没有按照我希望的那样运行!intmain(){stringinput;charchoice;boolgetChoice(char);stringgetInput();CharConverternewInput;do{cout>choice;}while(getChoice(choice)==true);return0;}这个程序在第一轮运行良好,但当getChoice()==true时我遇到了问题,并且dowhileblock被第二次循环。在第二个循环中,程序要求我再次输入一个句子,但随后直接跳转到“Wouldyoulike

c++ - gnu c++0x 向后兼容状态 - 我可以打开它然后继续吗?

我有一个相当大的C++代码库(不是自己写的)。许多库,有些在语法上不那么重,有些非常重。其中大量使用了Boost,一些Eigen。我只是喜欢0x的一些新特性,快速编译/测试告诉我它看起来一切都很好。Thisquestion,andthisone建议有些东西闻起来很有趣。我现在的状态是:gcc4.4.3libstc++6-4.4boost-1.40本征3.0-beta3使用std=c++0x标志。我知道标准委员会一直在为向后兼容性而苦恼并忍受着巨大的痛苦。我的问题是,它有效吗?我能否获取所有这些代码,打开c++0x并确定一切不仅编译而且按预期工作?我不使用高0x魔法,只是auto和一些在

C++ tellg() 不适用于 getline()?

我知道这个标题听起来很疯狂,但我现在正在亲body验这一点,我想不出任何失败的原因。我正在使用getline()读取文件在阅读结束时,我调用了tellg()。但是,此调用总是失败(返回值为-1)。tellg()不能与getline()一起使用是已知问题还是我做错了什么?我用的代码很简单,基本上while(getline(file,line)){//tokenizeanddootherthings}cout有问题的文件是普通磁盘上的一个简单的txt文件,我尝试了一个带和不带CRLF的文件,但没有任何区别。编辑:附加信息gcc/g++4.1.2,Linux(RHEL5)编辑2:根据这个线程