scanf 读入 string 注意点
2024-09-08 19:40:51
在做题的时候需要读入字符串,但是又不想使用char 数组,于是采用string存储,当时遇到了scanf读取string失败,查阅资料后总结下。
scanf是c的标准输入输出流,想要读入string,需要提前对string分配足够大的空间,否则会截断数据,其次scanf的参数需要string[0]。
test 1: read a signle string using scanf
#include <bits/stdc++.h>
using namespace std;
int main()
{
string word;
word.resize(100); // 提前分配好空间,更建议使用cin
scanf("%s", &word[[0]);
cout << word << endl;
return 0;
}
test 2: read a vector string using scanf
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<string> words;
string word;
word.resize(100);
for(int i = 0; i < 3; i++)
{
scanf("%s", &word[0]);
words.push_back(word);
}
return 0;
}
补充提高cin速度,一行代码搞定:
std::ios::sync_with_stdio(false);
最新文章
- [LeetCode] Kth Smallest Element in a BST 二叉搜索树中的第K小的元素
- (一)SQL Server分区详解Partition(目录)
- redis 集群搭建 以及 报错解决
- java-base64编码和解码
- linux c学习笔记----互斥锁属性
- hdu1828 线段树+离散化+扫描线
- 将Excel中数据导入数据库(二)
- emacs 操作集锦
- (转)Mac OS X内核编程,MAC驱动开发资源汇总
- Android 有趣味的GridView
- 《第一行代码》学习笔记2-Android开发特色
- Docker - 访问仓库
- 第 8 章 IO库
- Programming In Scala笔记-第十九章、类型参数,协变逆变,上界下界
- element表格添加查看操作
- 通过hash实现前端路由
- LeetCode算法题-Distribute Candies(Java实现)
- Session小结
- 华硕笔记本的U盘启动
- gt_argmax_overlaps = overlaps.argmax(axis=0) ValueError: attempt to get argmax of an empty sequence错误处理