使用 getline() 的 Wierd 行为
Wierd behaviour with getline()
#include<stdio.h>
#include<iostream>
#include<cmath>
using namespace std;
void test();
int main()
{
int t;
scanf("%d",&t);
while(t--)
test();
return 0;
}
void test()
{
string AB;
getline(cin,AB);
cout<<AB<<endl;
printf("adan");
}
此代码的行为很糟糕。当 t=1 时,getline() 语句根本不执行,直接转到 printf("ada");陈述。当 T=2 时,首先打印一次"ada",然后输入一次。如果我在main()函数本身中编写test()函数,则不会出现此问题。伙计们,请执行它并告诉我解决方案!我应该在发生相同错误的不同问题中使用 getline()!
main
中的scanf()
调用仅消耗号码。 它在输入中等待的数字之后留下任何换行符。
将 C 样式输入与C++样式输入混合也不是一个好主意。 你最好通篇使用C++风格,也许也使用getline()
。
例如:
int main()
{
string line;
int t;
getline( cin, line );
sscanf( line.c_str(), "%d", &t );
// ...
}
此代码也不执行任何错误检查。 为了使它真正防弹,您应该添加它。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- arr[-1]在c++中的奇怪行为
- 继承期间显示未知行为的子类
- 如何在c++中使用引用实现类似python的行为
- G锁定铸造到基础上会释放模拟行为
- 在C++中对T*类型执行std::move的意外行为
- std::当在256字节边界上写入整数时,流的奇怪行为
- 不知道某个东西是否被忽略会引入未定义的行为吗
- 奇怪的构造函数行为
- 重载运算符new[]的行为取决于析构函数
- 不同语言中相同代码的不同行为
- 处理除以零会导致<csignal>意外行为
- 试图理解类对象的行为
- c++11评估顺序(未定义的行为)
- 从结构寻址时,MMAP变量的行为很奇怪
- Wierd行为,相同的代码在一个地方失败,主要起作用
- 使用 getline() 的 Wierd 行为
- C++中getline的Wierd行为
- unsigned short和signed short比较wierd行为