C 字符串:: size_type错误

C++ string::size_type error

本文关键字:type 错误 size 字符串      更新时间:2023-10-16

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

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

您应该使用卷曲括号编写正确的代码块。在您的第一个示例中,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;
    } // <<<

您缺少括号

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

如果格式化代码,您将看到错误

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