草庐IT

getLine1

全部标签

c++ - 使用 getline() 而不设置 failbit

是否可以使用getline()读取有效文件而不设置failbit?我想使用failbit以便在输入文件不可读时生成异常。以下代码总是在最后一行输出basic_ios::clear-即使指定了有效输入也是如此。测试.cc:#include#include#includeusingnamespacestd;intmain(intargc,char*argv[]){ifstreaminf;stringline;inf.exceptions(ifstream::failbit);try{inf.open(argv[1]);while(getline(inf,line))cout输入.txt:t

c++ - 可以将 std::getline() 与移出的 std::string 一起使用吗?

std::getline(std::istream&,std::string&)的第二个参数是否安全且定义明确?成为一个左值,指的是从std::string移出的,如果是,那么字符串是否从其移出状态恢复,所以方法如pop_back()可以安全调用吗?更简单地说,使用getline()写入字符串是否与分配给该字符串具有等效的语义?或者更具体地说,以下(有些做作的)代码段是否定义明确且正确?std::ifstreamf("foo.txt");std::vectorlines;for(std::strings;std::getline(f,s);lines.push_back(std::mo

c++ - 尝试转换 str 字符串以用于 std::getline 定界符

我正在尝试获取std::string值并将其用作std::getline()函数中的分隔符但无论我做什么,编译器都会给我错误。这就是我想要做的:std::stringstreamss(s);std::stringitem;std::stringdelim="&&=";intssize=delim.size();intnewssize=ssize+1;chardel[SSIZE];//alsoherewhenitrygiveserrorstrcpy(del,delim.c_str());char*delrr[1024]=delim.c_str();//giveserrorwhile(st

c++ - 为什么 getline() 跳过输入,即使在 cin.clear() 之后?

所以我有一个函数可以不断跳过第一个getline并直接进入第二个。我尝试清除缓冲区,但仍然没有成功,这是怎么回事?voidgetData(char*strA,char*strB){cout 最佳答案 确保您没有使用cin>>str。在调用函数之前。如果你使用了cin>>str,然后想使用getline(cin,str),你必须先调用cin.ignore()。stringstr;cin>>str;cin.ignore();//ignores\nthatcin>>strhaslefted(ifuserpressedenterkey)ge

c++ - 我对 getline+strings 有什么不了解的地方?

这是我第一次使用stackoverflow。我一直无法找到我需要的有关getline的信息。我在一个简单的工程转移编程类(class)中,所以我们编写的代码非常简单。我在这里要做的就是将用户定义数量的问题和答案放入两个不同的数组中。我的while循环看起来像这样(我正在使用for循环但切换到while只是为了看看它是否会停止中断):intmain(){srand((unsigned)time(0));stringquest1[100],answ1[100];intsize1,x=0,num,count1,visit[100],shuffle[100];fstreamflashcard1

c++ - 为什么我需要写 "std::string"而不是 "std::getline()"?

考虑这段代码:#include#includeintmain(){std::stringstr;std::cout为什么我必须对string、cin和cout使用std::而不是获取行()?getline()不在标准库中吗?我实际上有点困惑,为什么我不能只编写usingnamespacestd;而不必#include标准库中的任何内容。提前致谢! 最佳答案 神奇的自动命名空间限定。这是AndrewKoenig的*错误。他考虑了为用户定义类型提供运算符的问题。并提出了根据参数解析函数的想法。例如。对于在命名空间std中定义的类型参数,

c++ - CEdit::GetLine() Windows 7

我有以下代码段,其中m_edit是一个CEdit控件:TCHARlpsz[MAX_PATH+1];//gettheeditboxtextm_edit.GetLine(0,lpsz,MAX_PATH);这在运行WindowsXP和更早版本的计算机上完美运行。我没有在Vista中对此进行测试,但在Windows7上,lpsz将垃圾unicode字符插入其中(有时还有实际文本)。知道这里发生了什么吗? 最佳答案 既然您正在使用MFC,为什么不利用它的CString类呢?这是许多程序员被MFC吸引的原因之一,因为它使处理字符串变得更加容易。

c - GNU-getline : strange behaviour about EOF

测试为了发现getline()在遇到EOF时的行为,我编写了以下测试:intmain(intargc,char*argv[]){size_tmax=100;char*buf=malloc(sizeof(char)*100);size_tlen=getline(&buf,&max,stdin);printf("length%zu:%s",len,buf);}而input1是:abcCtrl-DEnter结果:length4:abc//noticethat'\n'isalsotakenintoconsiderationandprinted输入2:abcEnter完全相同的输出:length

c++ - 如何从 std::string 执行 "getline"?

我有问题。我加载整个文件,然后通过它获取一些信息。然而,在map格式中,信息可能有0或20条“线”。我需要知道如何通过std::string获取行。有一个函数(源流,目标字符串,十进制),但我需要(源字符串,目标字符串,十进制)。在C++中无法在流中搜索(仅使用许多临时字符串并多次提取和插入,尚不清楚,我不想以那种凌乱的方式进行)。所以我想知道如何从std::string获取行。比 最佳答案 你似乎想要std::istringstream,位于标题中:std::stringsome_string="...";std::istring

c++ - 为什么使用 LLVM 时 std::ifstream "break"std::getline 的缓冲?

我有一个简单的C++应用程序,它应该从POSIX命名管道中读取行:#include#include#includeintmain(){std::ifstreampipe;pipe.open("in");std::stringline;while(true){std::getline(pipe,line);if(pipe.eof()){break;}std::cout步骤:我创建了一个命名管道:mkfifoin。我使用g++-std=c++11test.cpp&&./a.out编译和运行C++代码。我将数据输入到in管道:sleepinfinity>in&#keeppipeopen,av