在 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;
};
  1. 我的书上没有规定text应该是什么,所以我编了个string text,但是text应该是什么类型呢? const string、const char 还是其他?

    1. resolve后s变成什么类型​​?
    2. 什么是 s[s.size()-1]?或者什么函数类型试图同时调用 empty 和 size? - 编译后出现错误:'empty and size in 's,' which is of non-class type 'const char.
    3. 当我查看书中的 string 和 char 函数时,我找不到 empty() 或 size() 函数。我是否必须使函数为 empty() 和 size()?

在这种情况下,auto 被扣除为 char 类型,所以 sconst char&

要修复您的代码,您可以编写:

    for (const auto& s : text){
    cout << s ;
    if(s == '[=10=]' || s == '.')
        cout << endl;
    else
        cout << "" ;
}

'[=13=]' 代表一个空字符。您不必编写函数。 '[=13=]' 也充当字符串终止符,因此每个字符串和 char* 的末尾都包含一个 '[=13=]',它会自动为您附加。

empty()size()std::stringclass的成员函数。 text 是一个 std::string,因此您可以使用 text.empty()text.size() .size() returns 字符串的总大小。

然而 s 在这里不是数组(它是对 char 的单个引用,而不是 char*)所以你不能将 operator [] 与单身 char.