请教(回帖给高分!!!!)

jgf_student 2004-11-29 08:53:33
我用C++语言写如下代码:
#include <fstream>
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
string myStr;
cin>>myStr;
}

结果程序在VC6.0下无法通过,抱错如下:
error C2679: binary '>>' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is no acceptable conversion)
难道无法通过cin语句来输入字符串吗?
各位大虾请指点!!
...全文
207 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
一条晚起的虫 2004-12-02
  • 打赏
  • 举报
回复
C++中有string类,在std里,VC++的CString不是标准库的东西
Freemanz 2004-12-02
  • 打赏
  • 举报
回复
C++当然没有string类型,去看看C++标准吧!string不是基本类型,Vc等工具提供string类型,其实那是一个类拉!!你用类会调用构造函数那就等于已经初始化了,所以以上的语句可以通过!!
张佩 2004-12-01
  • 打赏
  • 举报
回复
#include <iostream>
#include <string>
using namespace std;//stl
void main()
{ string str;
cin>>str;
cout<<str;
}
我这样是可以的呀,为什么不行呢?
楼上:C++中没有string类型?
Freemanz 2004-12-01
  • 打赏
  • 举报
回复
初始化?!试试用这个:char* myStr=" ";(两个引号之间有个空格)代替你的string myStr;
前面有人说了,C++里没有string类型。如果你要用纯C++写就用char*吧,不过一定要记住要初始化。

//把握好你的指针,虽然它是最不可信赖的,但却是你唯一可信赖的!
Mr-Chen 2004-12-01
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <iostream>
#include<string>
using namespace std;

int main(int argc, char* argv[])
{
string myStr;
cin>>myStr;
cout<<myStr<<endl;
return 0;
}
chensuwen 2004-12-01
  • 打赏
  • 举报
回复
我用C++语言写如下代码:
#include <fstream>
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
string myStr;
cin>>myStr;
}

上面这段代码存在以下错误:
1。string 在C/C++中没有这种数据类型,所以无所直接使用。
注:在VC的MFC中定义了String类,如果使用MFC的话,可以直接使用。
2。main()函数,应该有返回值,否则编译会有警告。
3。如果进行string类定义时,一定要重载>>运算符,否则一样不能使用>>。

修改后的代码如下:

#include <fstream>
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
char myStr[100];
cin>>myStr;
return 0;
}
张佩 2004-12-01
  • 打赏
  • 举报
回复
Sorry啊,应当是char myArr[20],前面没有*的。
张佩 2004-12-01
  • 打赏
  • 举报
回复
答:是char*的不能用cin>>,但char a[20]又可以,想知道为什么!!UP起来
char*当然不行了,它现在是个没有初始化的空指针嘛,怎么能用它来就手cin的值?
你应该这样:
char *myChar;
char *myArr[20];
myChar = myArr;
cin>>myChar;
这样就可以了。
张佩 2004-12-01
  • 打赏
  • 举报
回复
SORRY,可以通过,如果用"ehllo world"向导生成的控制台程序,默认不行,必须将Precomlied Header去掉才能编驿通过。
把#include "stdafx.h"去掉
loki2k 2004-12-01
  • 打赏
  • 举报
回复
不行吗?
loki2k 2004-12-01
  • 打赏
  • 举报
回复
cin>>myStr.str();
likun1983 2004-12-01
  • 打赏
  • 举报
回复
.net托管代码,在.net 里运行
hongzm 2004-12-01
  • 打赏
  • 举报
回复
up
oyljerry 2004-11-30
  • 打赏
  • 举报
回复
数组是可以的啊
hongzm 2004-11-30
  • 打赏
  • 举报
回复
是char*的不能用cin>>,但char a[20]又可以,想知道为什么!!UP起来
Mr-Chen 2004-11-30
  • 打赏
  • 举报
回复
#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main(int argc, char* argv[])
{
string myStr;
cin>>myStr;
}
hongzm 2004-11-30
  • 打赏
  • 举报
回复
SORRY,可以通过,如果用"ehllo world"向导生成的控制台程序,默认不行,必须将Precomlied Header去掉才能编驿通过。
alphakiller 2004-11-30
  • 打赏
  • 举报
回复
加一个#include <string>
vcstorm 2004-11-30
  • 打赏
  • 举报
回复
#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main(int argc, char* argv[])
{
string myStr;
cin>>myStr;
}

在VC6 可以编译通过;你是用什么编译的?
string应该是通过模板化类得到的。
hongzm 2004-11-30
  • 打赏
  • 举报
回复
我用楼上的方法不行!编绎通不过。
char*就可以。string不是一个类吗?
加载更多回复(5)

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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