代码如下所示,字符串库已被注释,但程序仍能正常运行
#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;
}
答案 0 :(得分:1)
因为内部iostream
包含string
。
包含是可传递的,并且一些依赖项可能依赖于编译器,而其他依赖项在所有平台上都是相同的(一个这样的示例包括map
将使pair
可用,因为它取决于直接)。
string
和iostream
之间的依赖关系未在任何地方定义,因此虽然它可能适用于某些编译器,但您不应该依赖它。