为什么我可以在<string>包含在C ++中时使用字符串函数length()?

时间:2016-07-25 14:39:35

标签: c++ string

代码如下所示,字符串库已被注释,但程序仍能正常运行

#include<iostream>
//#include<string>   // the string library has been commented 
using namespace std;

int main(){
    int n;
    cin>>n;
    for(int i=0; i<n; i++){
        string str;
        int num = 0;
        cin>>str;
        int len = str.length();    //the function length is used here!
        for (int j =0; j< len; j++){
           if (str[j] >='0' && str[j] <='9')
               num ++;
        } 
    cout<<num<<endl;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

因为内部iostream包含string

包含是可传递的,并且一些依赖项可能依赖于编译器,而其他依赖项在所有平台上都是相同的(一个这样的示例包括map将使pair可用,因为它取决于直接)。

stringiostream之间的依赖关系未在任何地方定义,因此虽然它可能适用于某些编译器,但您不应该依赖它。