posts - 9,comments - 21,trackbacks - 0

书上说,string可以看作char数组:
#include <iostream>

using namespace std;

int main()
{
    const int SIZE = 20;
    string str;
    char ch[SIZE];
   
    cin >> str;
    cin >> ch;
    cout << str << "," << ch << endl;

    system("PAUSE");
    return 0;
}
在使用 cin >> 时,无论是string还是char[],编译器都能通过编译。可是,当使用cin.getline()时:
#include <iostream>

using namespace std;

int main()
{
    const int SIZE = 20;
    string str;
    char ch[SIZE];
   
  
    cin.getline(ch,SIZE);
    cin.getline(str,SIZE);
   
   
    system("PAUSE");
    return 0;
}
编译器无法编译,出错信息:13(行号)  no matching function for call to `std::basic_istream<char, std::char_traits<char> >::getline(std::string&, const int&)'
不是说,string是char的数组吗?可是,为什么会出现没有匹配的函数???

再有:
#include <iostream>
#include <string>
using namespace std;

int main()
{
    const int SIZE = 20;
    string str;
    char ch[SIZE];
    char c;
  
    cin.get(c);
    cin.get(ch);
    cin.get(str);   
   
    system("PAUSE");
    return 0;
}
cin.get()只允许接受char类型的参数,不接受char[]、string类型的参数。所以,从cin.get(ch);开始,就无法编译了。

(本人使用的编译器:Dev-C++ 4.9.9.2)

posted on 2006-04-12 15:17 蕃豆仁 阅读(3967) 评论(3)  编辑 收藏 引用 所属分类: C++ primer plus读书笔记

FeedBack:
# re: cin之于char[]和string
2006-04-12 15:19 | 蕃豆仁
一直以为string = char[],看来在某些情况下会出意外?
还是我的理解本来就片面?  回复  更多评论
  
# re: cin之于char[]和string
2007-01-31 23:22 | 今夜有风
1.
cin.getline(str,SIZE);
应该改为getline(cin,str);

2.
cin>>c;
cin.get(ch,SIZE);
cin.get();
getline(cin,str);   回复  更多评论
  
# re: cin之于char[]和string
2007-01-31 23:29 | 今夜有风
2.
c=cin.get();
cin.get(ch,SIZE);
cin.get();
getline(cin,str);   回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理