C++ cin.getline()具有较大的大小 #包括 使用名称空间std; int main() { 煤焦试验[10]; char cont[10]; cin.getline(测试,10); cin.getline(续10); cout
标准规定,在以下条件下,您可以获得比您输入的行“更短”的行:C++ cin.getline()具有较大的大小 #包括 使用名称空间std; int main() { 煤焦试验[10]; char cont[10]; cin.getline(测试,10); cin.getline(续10); cout,c++,getline,C++,Getline,标准规定,在以下条件下,您可以获得比您输入的行“更短”的行: 您使用的C++可能不符合标准。-不可能。 你在某处碰到了一个类似于的角色 我的猜测是将char[]更改为字符串(STL)然后再试一次。另外,当你说你一次输入123456789001234567890时,所有内容都进入test。由于test只有10个字节长,将输出123456789。没有任何内容输入cont,因为为istream类设置了failbit,并且阻止了进一步的输入。此代码适用于我的std::string #include<
char[]
更改为字符串(STL)
然后再试一次。另外,当你说你一次输入123456789001234567890
时,所有内容都进入test
。由于test
只有10个字节长,将输出123456789。没有任何内容输入cont,因为为istream类设置了failbit
,并且阻止了进一步的输入。此代码适用于我的std::string
#include<iostream>
using namespace std;
int main()
{
char test[10];
char cont[10];
cin.getline(test,10);
cin.getline(cont,10);
cout<<test<<" is not "<<cont<<endl;
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
//煤焦试验[10];
//char cont[10];
串试验;
字符串cont;
cin>>试验;
cin>>续;
//cin.getline(测试,10);
//cin.getline(续10);
不能从某处复制
cin.getline从输入序列中提取字符,并将其作为c字符串存储到从s开始的数组中。
在提取(n-1)个字符或找到定界字符(如果指定了此参数,则为delim,否则为'\n')之前,将一直提取字符。如果在输入序列中达到文件结尾或在输入操作期间发生错误,则提取也将停止
我相信您在输入123456789001234567890后按了两次enter键。如果输入太长,则设置失败位,从而阻止进一步输入。将代码更改为:
#include<iostream>
#include <string>
using namespace std;
int main()
{
//char test[10];
//char cont[10];
string test;
string cont;
cin >> test;
cin >> cont;
//cin.getline(test,10);
//cin.getline(cont,10);
cout<<test<<" is not "<<cont<<endl;
return 0;
}
#包括
使用名称空间std;
int main()
{
煤焦试验[10];
char cont[10];
cin.getline(测试,10);
cin.clear();//添加此
cin.getline(续10);
cout如果读入的变量不够大,无法容纳整行,则输入操作将失败,流将无法读取更多内容,直到调用cin.clear()
您应该使用std::string来保存数据。它将调整自身大小以匹配输入
#include<iostream>
using namespace std;
int main()
{
char test[10];
char cont[10];
cin.getline(test,10);
cin.clear(); // add this
cin.getline(cont,10);
cout<<test<<" is not "<<cont<<endl;
return 0;
}
getline()函数具有以下两个语法:
std::string test;
std::string cont;
getline(cin, test);
getline(cin, cont);
s:指向字符数组的指针,其中提取的字符存储为c字符串
n:写入s的最大字符数(包括终止的空字符)
delim:显式分隔字符
此函数的返回类型为istream对象(*this)
在上述场景中,数据被读入指向字符数组test的指针,该数组在运行时被转换,因此最多可以存储50个字符,如cin.getline(test,50)
中声明的那样
如果你想达到你想要的结果,请使用n=10
帮大家一个忙,忘记cin.getline
甚至存在。改用std::getline
。它并不完美,但在大多数情况下,这是一个明确的改进。谢谢,“如果输入太长,则istream::getline设置失败位,这会阻止进一步输入。”这正是我想要听到的。您的回答也很好。谢谢。cin.clear()对于解决此问题很重要。
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );