使用 sstream 完成转换,

 #include <iostream>
#include <string>
#include <sstream>
#include <stdint.h> int main ()
{
std::string str_integer;
uint64_t integer; std::getline(std::cin, str_integer);
std::stringstream ss;
ss.str(str_integer);
ss >> integer;
std::cout << __LINE__ << ":" << integer << std::endl; return ;
}

一次性转换较为容易,但是如果 std::stringstream 对象多次使用就要注意状态的清理,

 #include <iostream>
#include <string>
#include <sstream>
#include <stdint.h> int main ()
{
std::string str_integer;
uint64_t integer;
std::stringstream ss; str_integer = "";
ss.str(str_integer);
ss >> integer;
std::cout << __LINE__ << ":" << integer << std::endl; str_integer = "";
ss.str(str_integer);
ss >> integer;
std::cout << __LINE__ << ":" << integer << std::endl; return ;
}

就会发现,第二次输出的值并不是 12345,而是 1234。

原因是第一次 ss >> integer 执行之后,ss 就被置上了 eof 标志,所以,第二次执行 ss >> integer 时,是不会输出的,integer 中保留了原来的 1234。下面的代码能够正确执行,

#include <iostream>
#include <string>
#include <sstream>
#include <stdint.h> int main ()
{
std::string str_integer;
uint64_t integer;
std::stringstream ss; str_integer = "";
ss.str(str_integer);
ss >> integer;
std::cout << __LINE__ << ":" << integer << std::endl; str_integer = "";
ss.str(str_integer);
ss.clear(); // 加上这句就可以正确输出了
ss >> integer;
std::cout << __LINE__ << ":" << integer << std::endl; return ;
}

ss.clear() 就可以清除 eof 标志,ss >> integer 就能正确输出。

另外,如果想清除 stringstream 中原有的数据,使用下面的方法就可以保证正确执行,

ss.str("");        // 重置缓冲区数据
ss.clear(); // 不是必须的,但是保险起见

所以我们发现很多地方单独使用 ss.str("") 后续并没有得到正确输出,那就很可能是状态标志没有清除,而单独使用 ss.clear() 达不到清除缓冲区数据的目的。

C++ string 转整数的更多相关文章

  1. 关于string转整数

    又是leetcode的easy级别题,很基本的题目,却漏考虑很多情况,动手前一定要考虑清楚呀!!! 就当做锻炼写作能力吧,先上题目! 将文本转换成整数,注意一下几点: 1.文本里面第一个不为空白的字符 ...

  2. string和整数转换

    tostring(int) fromstring(string ) c++11新方式 stod Convert string to double (function template ) stold ...

  3. Swift2.0 中的String(三):类型转换

    本系列第三篇,String相关的类型转换.其他的几篇传送门(GitHub打不开链接的同学请自行把地址github改成gitcafe,或者直接去归档里找:-P): Swift2.0 中的String(一 ...

  4. String及其他

    String 以下例开始讲解String public class StringDemo { public static void main(String[] args) { // String s ...

  5. c++实现atoi()和itoa()函数(字符串和整数转化)

    (0) c++类型所占的字节和表示范围 c 语言里 类型转换那些事儿(补码 反码) 应届生面试准备之道 最值得学习阅读的10个C语言开源项目代码 一:起因 (1)字符串类型转化为整数型(Integer ...

  6. 8:String类

    String类 String类的特点: 字符串对象一旦被初始化就不会被改变. 字符串是最常用的类型之一,所以为了使用方便java就给封装成了对象方便使用  public static void str ...

  7. JAVA基础部分复习(一、8中基础类型,以及String相关内容)

    以下是关于java中8种基本类型的介绍说明: package cn.review.day01; /** * java基础复习,8种数据类型 * (byte,short,long,int,double, ...

  8. golang 学习之路 string转换为其他类型 其他类型转换为string

    将其他值转换为string 一般常用fmt.Sprintf(格式,转换的值) // 使用fmt.Sprintf 转换所有的类型为string 使用 这是第一种 // 注意在sprintf使用中需要注意 ...

  9. string操作大全

    1. string to int && int to string 2. 整数1转换成字符串"001" int sprintf ( char * str, cons ...

随机推荐

  1. 只需3步,即可将你的Chromium Edge 浏览器设置成中文

    最近,Chromium Edge 浏览器推出了添加语言包的功能,于是我们可以轻松将其界面设置成中文的. 第1步: 升级浏览器到最新版 在Chromium Edge 浏览器的地址栏中输入: edge:/ ...

  2. shiro之IniRealm

    Shiro认证过程 创建SecurityManager--->主体提交认证--->SecurityManager认证--->Authenticsto认证--->Realm验证 ...

  3. poj 2299 Ultra-QuickSort 归并排序求逆序数对

    题目链接: http://poj.org/problem?id=2299 题目描述: 给一个有n(n<=500000)个数的杂乱序列,问:如果用冒泡排序,把这n个数排成升序,需要交换几次? 解题 ...

  4. Lightoj 1071 - Baker Vai (双线程DP)

    题目连接: http://lightoj.com/volume_showproblem.php?problem=1071 题目大意: 一个n*m的格子,Baker Vai要从(1,1)到(n,m)再回 ...

  5. bzoj2002 [Hnoi2010]Bounce 弹飞绵羊【LCT】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2002 第一道LCT,调了3天,发现是智障bug,我的青春... 主要参考了黄学长的代码,也没 ...

  6. Appium教程---Client/Server Architecture

    appium的核心其实是一个暴露了一系列REST API的server. 这个server的功能其实很简单:监听一个端口,然后接收由client发送来的command.翻译这些command,把这些c ...

  7. hbase最近的一些实践

    有一段实践没有写东西了,最近组里面来了两个新的小伙伴,并且一起针对目前的hbase集群做了一些运维和优化实践,比较零散,记录下来供以后以及和大家参考. 1,hbase regionserver宕机导致 ...

  8. 移动端UI自动化Appium测试——Appium server两种启动方式

    执行自动化测试之前,需要先运行appium server,这样才能形成server与java client的通信,启动server有两种方式,一种是命令,一种是按钮图标,具体使用如下: 1.用命令启动 ...

  9. C#_JDBC连接数据库

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  10. 维控PLC与电流变送器modbus通讯获取电流变送器数据

    2018-09-2319:28:01 今天本来要用单片机来做这个项目的,但是失败了.... 所以我又拿出了PLC来搞,也是相当之复杂,查了很多资料终于做出而来了. 今天还有事,赶紧临时备份总结一波