下面的代码尝试输入多个字符串与空白,然后我需要做他们之间的比较。我面临的问题是,它不能输入超出第一个字符串的字符串。我想这是输入缓冲区中的“输入”,导致这种行为,即跳过字符串的进一步输入。任何建议如何克服这一点?输入多个字符串C++
Refered:How to cin Space in c++?
编辑:清除和冲洗我曾尝试,但仍然同样的问题。 我需要实现C风格的字符串函数,所以不能使用字符串类,strcmp等函数必须由我来实现,而不是使用库函数。
int main()
{
char s[100];
char s1[100];
char s2[100];
char* sub;
struct countSpaces cs;
cout << "Enter a String : ";
cin.get(s, 100);
std::cin.clear();
cs=count(s);
cout << s << " contains " << cs.letters << " letters and " << cs.spaces << " spaces" << endl;
cout << "Length of " << s << " is " << strlen(s) << endl;
cout << "Enter First String : ";
cin.get(s1, 100);
std::cin.clear();
cout << "Enter second String : ";
cin.get(s2, 100);
std::cin.clear();
if(strcmp(s1,s2))
cout << s1 << " is equal to " << s2 << endl;
else
cout << s1 << " is not equal to " << s2 << endl;
return 0;
}
输出:
$ ./String
Enter a String : Herbert Schildt
Herbert Schildt contains 14 letters and 1 spaces
Length of Herbert Schildt is 15
Enter First String : Enter second String : is not equal to
只是通过搜索'[C++] cin缓冲区'或'[C++] cin跳过',这是一个和其他许多人的重复。所以-1没有研究工作。另外考虑使用'std :: string'而不是C字符串,可能存在缓冲区溢出问题。 – Rapptz
@Rapptz我已经尝试刷新输入流(刷新和清除),但仍然是同样的问题。我不明白你的-ve投票,我也必须手动实现C类型的字符串函数,这就是为什么不使用C++字符串。将感谢解决方案,而不是-ve投票。 –
[这是非常基本的](http://ideone.com/uQpXIp)。 – Rapptz