不能将参数 1 从“std::string”转换为“char &” C++麻烦

yanglin986 2011-12-01 03:37:00
源代码:infpt.open("c:\\yl.txt",ios::binary);
if(infpt.fail())
{
cout<<"文件打开失败\n";
}
else
{
while(infpt.get(buff))

cout<<buff;


}
strcpy(p, buff.substr(1, 8).c_str);
for(int i=0;i<8;i++)
{
cout<<p[i];
}

错误提示:
std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::get(_Elem &)”: 不能将参数 1 从“std::string”转换为“char &”
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]


请问这是怎么回事啊 ?头疼啊
...全文
534 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanglin986 2011-12-01
  • 打赏
  • 举报
回复
出新问题了:: 不能将参数 1 从“char [1024]”转换为“char &”
源代码:while(infpt.get(temp_buff))

cout<<temp_buff;


}
string buff(temp_buff);
strcpy(p, buff.substr(1, 8).c_str());
鸟辉 2011-12-01
  • 打赏
  • 举报
回复
晕。c_str就是将string转化成const char*的。这与substr这是string的方法。
char的话用strncpy重新搞下
yanglin986 2011-12-01
  • 打赏
  • 举报
回复
谢谢你们,但是改成char buff之后 下面那个取字节函数怎么改啊 就是这个strcpy(p, buff.substr(1, 8).c_str);
xf_pan 2011-12-01
  • 打赏
  • 举报
回复

else
{
while(infpt.get(buff.c_str()))

cout<<buff;


}
herocxgood 2011-12-01
  • 打赏
  • 举报
回复
应该是get()里面参数类型不对
周晓荣 2011-12-01
  • 打赏
  • 举报
回复

char temp_buf[1024];
if(infpt.fail())
{
cout<<"文件打开失败\n";
}
else
{
while(infpt.get(temp_buf)) //这里的参数应该是char类型,先用char类型存储,然后再转到string,又或者就直接对char进行操作
cout<<buff;
}
string buff(temp_buf);
TearyWang 2011-12-01
  • 打赏
  • 举报
回复
get里的参数,应该是一个char,不应该是buff
TearyWang 2011-12-01
  • 打赏
  • 举报
回复
buff应该是一个string类型。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧