求问c++中string类怎么用scanf读取

cin我知道我是问能不能用scanf,能用的话要怎么用... cin我知道
我是问能不能用scanf,能用的话要怎么用
展开
 我来答
果果就是爱生活
高能答主

2020-02-08 · 专注生活教育知识分享
果果就是爱生活
采纳数:2071 获赞数:272258

向TA提问 私信TA
展开全部

String类可以用cin流式读取。

在用scanf读取时,必须声明长度。不声明长度,直接scanf会出现运行时错误。

#include <stdio.h>

#include <string>

using namespace std;

int main()

{

string a;

a.resize(100); //需要预先分配空间

scanf("%s", &a[0]);

puts(a.c_str());

return 0;

}

扩展老岁资料:

C++11标准规定:basic_string的元素是连续存储的。即对于basic_string s,有:&*(s.begin() + n) == &*s.begin() + n,其中n属于[0, s.size())。

换句话说,指向s[0]的指针即为指向CharT[]数组的首元素指针。C++11已经禁止了写入时复制(copy-on-write)的实现,因为存在多线程安全早含雀问题。一般都采用了小字符串优化(SSO)实现,如Visual C++:

union _Bxty { // storage for small buffer or pointer to larger one _Elem _Buf[_BUF_SIZE]; _Elem *_Ptr; } _Bx; size_type _Mysize; // current length of stringsize_type _Myres; // current storage reserved for string

GCC从版本5开始陆早,std::string不再采用COW策略。

C++17标准规定,basic_string是AllocatorAwareContainer, SequenceContainer与ContiguousContainer。

luosiyong
推荐于2017-04-13 · TA获得超过3256个赞
知道大有可为答主
回答量:1090
采纳率:0%
帮助的人:1623万
展开全部
从控制台读入到字符串中
#include <stdio.h>
#include <string>
using namespace std;

int main()
{
string a;
a.resize(100); //需粗禅咐要预先分袭扒配空间
scanf("岩纯%s", &a[0]);
puts(a.c_str());
return 0;
}

如果是要从字符串中读出数据
string a;
int n;
sscanf(a.c_str(), "%d", &n);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Dr_JohnDoe
2012-01-20
知道答主
回答量:16
采纳率:100%
帮助的人:12.2万
展开全部
你问的这个和字符串有关哦。答案是不能用scanf读取string。
scanf是C语言<stdio.h>里的标准库函数,凡是它能读取的,都能用格式控制符表示。如读取int型变量就是%d,字符迅槐型变量就是%c。
C语言里的字符串是用char*,也就是字符指针处理的,必须借助库函数gets。
而C++里的string又是什么东西呢?它是STL里的一个类,叫string类,和其它的容器类非常相似,如vector,list等等。要使用string类必须#include <string.h>,这个你肯定知道吧?
你想,C语言不核薯支持面向对象,连类都没有,又怎么能读取string类的对象亩氏友呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GPRS_zhou
2012-01-20
知道答主
回答量:27
采纳率:0%
帮助的人:23.9万
展开全部
还是先读进字符数组 再将字符数组赋给string 这样比较常见 直接输入的话 还真没试过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忘至白葬不情必0T
2012-01-20 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
C++中用cin输入。
string a;
cin>>a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式