c++中的Getline()函数需要少一个输入
getline() function in c++ takes 1 less input
int main()
{
int n;
cin>>n;
string str1[n];
for(int i=0;i<n;i++)
getline(cin,str1[i]);
return 0;
}
我写了一个代码来输入n个字符串,但是代码只接受(n-1)个字符串作为输入。这是什么原因呢?
for
循环运行n
迭代,getline
读取n
行。考虑以下输入:
2
First
Second
在这个输入中有三行(不是两行!):2n
, Firstn
和Secondn
。
您的格式化输入(cin>>n
)读取第一行部分: 2
。然后循环运行两次,读入n
和Firstn
数据。第三行也是最后一行(Secondn
)永远不会被读取。
解决方案是在循环开始前从第一行读取n
。这可以通过多种方式实现。这里有一个:
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n')
相关文章:
- 为什么有时我输入一个整数,程序将第一个输入的数字打印成十进制数?
- 我有一个数组,我想输入一个范围,然后找到范围内所有偶数的总和?
- 如何修复艺术ASCII,我点击一个字母就可以了,但输入一个阶段艺术出来了
- 在CRC-16 CCITT中将数据从二进制解码为文本,我应该输入一个码字,使用CRC生成器进行编码
- 为什么当我输入一个被接受的数字时,我的 do-while 循环没有中断?
- 如果我们在其中输入一个整数,则字符会给出整数作为输出,但是当分配给它一个整数时,这不会发生。为什么?
- 为什么当我输入一个大数字时,输出会一遍又一遍地重复?
- C++输入为什么当我输入一个字母时会返回0
- 编写一个程序,提示用户输入一个整数,然后输出数字的单个数字和数字的总和
- 让用户输入一个键,如果找到多个键,则增加值
- 输入一个字符串并将其除以单词
- 当我输入一个字母时,cin 输入(输入是一个 int),而不是打印错误一次,它打印正确一次,然后在循环的其余部分打印 i
- 尝试获取用户输入和cout消息期望,当我输入一个有效名称时,它将所有这些命名
- 在C++中输入一个句子
- c++ 输入一个数字来确定其他数字,然后比较它们
- 从用户那里获取输入,直到他输入一个数字
- 在C++代码中,如何让用户在2个文本字符串之间输入一个数字
- C++:当我输入一个字符串时,由于某种原因,程序期望更多,并导致整个代码出现问题
- C++ microshell,输入一个命令并使用fork(),dup(),pipe()将其通过管道传输到进程。只是我没有得到我想要的结果
- 一种程序,用户输入一个字符串,程序对字母的实例进行计数