任何人都可以请告诉我为什么以下代码有效,当我使用 cin.ignore(0,'\ n')但是当我使用 cin.ignore时(100) ,'\ n'):/
#include <iostream>
using namespace std;
main () {
char arr[100], brr[100];
string srr;
cout << "Enter a string : ";
cin.clear();
cin.ignore(0, '\n');
cin.getline(arr, 100);
cin.getline(brr, 100);
cout << "brr : " << brr << endl;
srr = string(arr);
cout << "Converted to string : " << srr << endl;
string find;
cout << "Enter something to find : ";
getline(cin, find);
cout << endl;
if (srr.find(find) != string::npos)
cout << "Found ! at " << srr.find(find) << " " << endl;
else
cout << "Sorry ! not found :/ \n";
}
答案 0 :(得分:1)
当你写cin.ignore(0,'\n')
时,你会说&#34;忽略流中的字符,直到你忽略了0个字符或者你到达了&#39; \ n&#39;&#34;&#39 ;。由于您告诉流忽略最多0个字符,因此它什么都不做。
当您撰写cin.ignore(100, '\n')
时,您正在说&#34;忽略流中的字符,直到您忽略了100个字符或者您已达到&#39; \ n&#39;&#34 ;。可能不会有100个字符,因此您在下一个换行符之前基本上忽略了字符。如果你考虑一下,你就会忽略其余部分。
答案 1 :(得分:0)
从输入流中提取并丢弃字符,直到并包括delim。
...
count - 要提取的字符数
使用cin.ignore(0, '\n');
时,不会提取任何内容。这是一个无所事事的电话。
当您使用cin.ignore(100, '\n');
时,会提取并丢弃所有遇到100个字符或直到'\n'
的字符。