我正在使用visual studio 2013社区来学习c ++入门。 我遇到了这个问题。 当我编写以下代码时,VS显示len未定义。
#include "stdafx.h"
#include<iostream>
#include<string>
using std::string;
using std::cout;
using std::cin;
using std::endl;
int main()
{
string line;
while (getline(cin, line))
if (line.size() > 10)
auto len = line.size();
cout << line.size() <<" "<<len <<endl;
return 0;
}
当我编写以下代码时,VS显示len已定义且运行良好。
#include "stdafx.h"
#include<iostream>
#include<string>
using std::string;
using std::cout;
using std::cin;
using std::endl;
int main()
{
string line("fewogwewjgeigeoewggwe");
auto len = line.size();
cout << line.size() <<" "<< len <<endl;
return 0;
}
我真的没有看到它的原因。希望得到一些好的解释。很多!!!
答案 0 :(得分:7)
您应该使用花括号编写正确的代码块。在您的第一个样本len
超出范围
if (line.size() > 10)
auto len = line.size(); // <<< scope is local to this line
cout << line.size() <<" "<<len <<endl;
你想要的是
if (line.size() > 10) { // <<<
auto len = line.size(); // <<< scope is local to the block
cout << line.size() <<" "<<len <<endl;
} // <<<
答案 1 :(得分:3)
你缺少大括号
if (line.size() > 10)
{
auto len = line.size();
cout << line.size() <<" "<<len <<endl;
}
以上应该这样做。
更新
在学习新编程语言后,我做的第一件事就是研究编码标准并坚持下去。这将有很多方面,包括犯这样的错误。
c ++有很多编码标准,所以请选择 http://en.wikipedia.org/wiki/Coding_conventions#Coding_conventions_for_languages
答案 2 :(得分:1)
如果格式化代码,则会看到错误
while (getline(cin, line))
if (line.size() > 10)
auto len = line.size(); // variable len defined in this block ..
cout << line.size() <<" "<<len <<endl; // .. and not defined here