[英]Understanding a C++ program [ Bjarne Stroustrup's book ]
我需要你的宝贵帮助来解决一个小问题! 我正在阅读Bjarne Stroustrup的书,我发现了这个例子:
int main()
{
string previous = " ";
string current;
while (cin >> current) {
if(previous == current)
cout << "repeated word: " << current << '\n';
previous = current;
}
return 0;
}
我的问题是: string previous =“”; 做?
它在字符空间之前初始化(就像按空格时一样) 。 但我认为在C ++中它不会读取它,而是关于编译器跳过空白的东西。 为什么要把它初始化呢?
我试着这样写: string previous; 程序仍然正常工作......所以? 有什么不同? 请赐教x)
你是对的,当使用std::cin
读取输入时,空格是你永远不会得到的。 因此, previous
字符串初始化的值可能永远不会(即,当读取第一个字时)可能匹配读入current
字符串的字。
在这种情况下, previous
也可以初始化为空字符串,因为istream::operator>>
跳过所有空格,并且你永远不会像通过这样读取std::cin
那样得到空。 但是,还有其他使用std::cin
(例如与getline()
一起使用),这可能导致读取空字符串。
string previous = " ";
为字符串变量'previous'分配一个空格。
它可能仍然“有效”,但如果您只是在第一次尝试时按Enter键,则应出现“重复单词”消息。
他可以写:)
string previous;
这个想法是,如果默认设置为跳过空格,则operator >>
不能输入空字符串。
因此,任何与空字符串或包含空格的字符串的比较current
将产生false
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.