在s解析之后应该使用什么类类型(auto& s:text)?

时间:2015-08-07 19:46:26

标签: c++ string char auto

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. 我的书没有说明应该是什么文字,所以我创建了字符串文本,但文本应该是什么类型? const string,const char,还有什么?

    1. 解决之后,会变成什么类型​​?
    2. 什么是s [s.size() - 1]?或者是什么函数类型试图调用空和大小? - 编译后我得到一个错误:'空和大小','是非类型'const char。
    3. 当我在书中查看字符串和字符函数时,我找不到空()或size()函数。我是否必须使函数为empty()和size()?

1 个答案:

答案 0 :(得分:0)

在这种情况下,会扣除自动键入char,因此sconst char&

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

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

'\0'表示空char。你不必写一个函数。 '\0'也充当字符串终止符,因此每个字符串和char *在末尾都包含一个'\0',为您自动附加。

empty()size()std::string类的成员函数。 文字为std::string,因此您可以使用text.empty()text.size() .size()返回字符串的总大小。

但是s不是此处的数组(它是对char的单一引用,而不是char*),因此您无法使用{{1}只有一个operator []