getline reads characters from an input stream and places them into a string:

getline从输入流中读取字符, 并把它们转换成字符串.

getline(input, str, delim), 默认的分隔符是’\n’字符.

参数

input - 流中获取数据
str - 把数据转换成字符串
delim - 分隔符

例一:

#include <string>
#include <iostream>
#include <sstream> int main()
{
// greet the user
std::string name;
std::cout << "What is your name? ";
std::getline(std::cin, name);
std::cout << "Hello " << name << ", nice to meet you.\n"; // read file line by line
std::istringstream input;
input.str("1\n2\n3\n4\n5\n6\n7\n");
int sum = 0;
for (std::string line; std::getline(input, line); ) {
sum += std::stoi(line);
}
std::cout << "\nThe sum is: " << sum << "\n";
}

注意:

c++中的atoi()和stoi()函数的用法和区别:

相同点:
①都是C++的字符处理函数,把数字字符串转换成int输出
不同点:
①atoi()的参数是 const char* ,因此对于一个字符串str我们必须调用 c_str()的方法把这个string转换成 const char*类型的,而stoi()的参数是const string*,不需要转化为 const char*;

②stoi()会做范围检查,默认范围是在int的范围内的,如果超出范围的话则会runtime error!

而atoi()不会做范围检查,如果超出范围的话,超出上界,则输出上界,超出下界,则输出下界;

#include <iostream>
#include <sstream>
#include <string>
#include <vector> void split(const std::string& s,
std::vector<std::string>& sv,
const char delim = ' ') {
sv.clear();
std::istringstream iss(s);
std::string temp; while (std::getline(iss, temp, delim)) {
sv.emplace_back(std::move(temp));
} return;
} int main() {
std::string s("abc:def:ghi");
std::vector<std::string> sv; split(s, sv, ':'); for (const auto& s : sv) {
std::cout << s << std::endl;
} return 0;
}

或者:默认是空格和tab为分割符

istringstream strcin(str);
string s;
vector<string> vs;
while(strcin >> s) vs.push_back(s);

istringstream是由一个string对象构造而来,istringstream类从一个string对象读取字符。

  istringstream的构造函数原形如下:

  istringstream::istringstream(string str); 

最新文章

  1. Mysql 命令大全
  2. linux命令(5):rm 命令
  3. Linux常用命令_(系统管理)
  4. dede会员指定栏目发布文章
  5. Linux 用户态和内核态
  6. SQL Server 联表字段合并查询
  7. java 截取字符串 拆分字符串
  8. 移动M站建设
  9. 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级)
  10. tc-SRM-626-DIV1-250
  11. c#接口和抽象类比较
  12. Shell中脚本变量的作用域
  13. PyCharm远程开发和调试
  14. 十大web安全扫描工具
  15. 自学Linux Shell17.1-正则表达式
  16. Cglib动态代理实现原理
  17. vue问题总结
  18. 【LG3250】[HNOI2016]网络
  19. mac地址常识及获取
  20. BZOJ 3531 SDOI2014 旅行 树链剖分+线段树动态开点

热门文章

  1. 多测师讲解接口测试 _报错_高级讲师肖sir
  2. 异步编程新方式async/await
  3. ngx_align 值对齐宏
  4. shell脚本在后台运行以及日志重定向输出
  5. Ansible之YAML语言
  6. C++20 多线程 std::jthread
  7. HashMap的理解
  8. pybind11和numpy进行交互
  9. 050_Dos命令
  10. 通过express快速搭建一个node服务