在 s 被 for(auto &s :text) 解析后,s 应该是什么 class 类型?
what class type should s be in after s has been resolve by for(auto &s :text)?
string text("asdffffffffff.f");
for (const auto &s : text){
cout << s ;
if(s.empty() || s[s.size()-1] == '.')
cout << endl;
else
cout << "" ;
}
return 0;
};
我的书上没有规定text应该是什么,所以我编了个string text,但是text应该是什么类型呢? const string、const char 还是其他?
- resolve后s变成什么类型?
- 什么是 s[s.size()-1]?或者什么函数类型试图同时调用 empty 和 size?
- 编译后出现错误:'empty and size in 's,' which is of non-class type 'const char.
- 当我查看书中的 string 和 char 函数时,我找不到 empty() 或 size() 函数。我是否必须使函数为 empty() 和 size()?
在这种情况下,auto 被扣除为 char 类型,所以 s
是 const char&
。
要修复您的代码,您可以编写:
for (const auto& s : text){
cout << s ;
if(s == '[=10=]' || s == '.')
cout << endl;
else
cout << "" ;
}
'[=13=]'
代表一个空字符。您不必编写函数。
'[=13=]'
也充当字符串终止符,因此每个字符串和 char* 的末尾都包含一个 '[=13=]'
,它会自动为您附加。
empty()
和size()
是std::string
class的成员函数。
text 是一个 std::string
,因此您可以使用 text.empty()
或 text.size()
.size()
returns 字符串的总大小。
然而 s
在这里不是数组(它是对 char
的单个引用,而不是 char*
)所以你不能将 operator []
与单身 char
.
string text("asdffffffffff.f");
for (const auto &s : text){
cout << s ;
if(s.empty() || s[s.size()-1] == '.')
cout << endl;
else
cout << "" ;
}
return 0;
};
我的书上没有规定text应该是什么,所以我编了个string text,但是text应该是什么类型呢? const string、const char 还是其他?
- resolve后s变成什么类型?
- 什么是 s[s.size()-1]?或者什么函数类型试图同时调用 empty 和 size? - 编译后出现错误:'empty and size in 's,' which is of non-class type 'const char.
- 当我查看书中的 string 和 char 函数时,我找不到 empty() 或 size() 函数。我是否必须使函数为 empty() 和 size()?
在这种情况下,auto 被扣除为 char 类型,所以 s
是 const char&
。
要修复您的代码,您可以编写:
for (const auto& s : text){
cout << s ;
if(s == '[=10=]' || s == '.')
cout << endl;
else
cout << "" ;
}
'[=13=]'
代表一个空字符。您不必编写函数。
'[=13=]'
也充当字符串终止符,因此每个字符串和 char* 的末尾都包含一个 '[=13=]'
,它会自动为您附加。
empty()
和size()
是std::string
class的成员函数。
text 是一个 std::string
,因此您可以使用 text.empty()
或 text.size()
.size()
returns 字符串的总大小。
然而 s
在这里不是数组(它是对 char
的单个引用,而不是 char*
)所以你不能将 operator []
与单身 char
.