C ++ string :: size_type错误

时间:2015-05-04 06:57:09

标签: c++

我正在使用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;
}

我真的没有看到它的原因。希望得到一些好的解释。很多!!!

3 个答案:

答案 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