当前位置:   article > 正文

【C++】C++字符串和数字的拼接_c++ 字符串拼接数字

c++ 字符串拼接数字

如果你使用过python,你会发现字符串和int/float/double便捷的拼接方式;但如果你使用C++,可能你每次需要的时候搜索一下才能知道。本文提供两种简单的方式来完成这个功能。


std::to_string()

通过std::to_string()将数字类型转换成std::string类型,从而可以直接使用+完成字符串的拼接。

# include <iostream>

int main(int argc, char const *argv[])
{
  std::string str = "hello " + std::to_string(1);
  std::cout << str << std::endl;

  return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

需要注意的是,std::string是C++11才有的方法,在g++编译的时候需要指定-std=c++11

编译并运行这段程序:

yngzmiao@yngzmiao-virtual-machine:~/test$ g++ test.cpp -o test -std=c++11
yngzmiao@yngzmiao-virtual-machine:~/test$ ./test 
hello 1
  • 1
  • 2
  • 3

同时,如果想要转化为const char*的类型,可以使用c_str()方法:

std::string str = "hello 1";
str.c_str();
  • 1
  • 2

如果想要去除const属性,需要使用到const_cast

const char* const_char_str = str.c_str();
std::cout << const_char_str << std::endl;

char* char_str = const_cast<char*>(const_char_str);
std::cout << char_str << std::endl;
  • 1
  • 2
  • 3
  • 4
  • 5

ostringstream

通过字符串流来完成字符串和数字的拼接,再将字符串流的内容转化为std::string的类型。

使用ostringstream之前,需要指定头文件:

# include <iostream>
# include <sstream>

int main(int argc, char const *argv[])
{
  std::ostringstream oss;
  oss << "hello " << 2;
  std::string str = oss.str();
  std::cout << str << std::endl;

  return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

编译并运行这段程序:

yngzmiao@yngzmiao-virtual-machine:~/test$ g++ test.cpp -o test -std=c++11
yngzmiao@yngzmiao-virtual-machine:~/test$ ./test 
hello 2
  • 1
  • 2
  • 3

使用ostringstream,如何来清空内容呢?

oss.str("");
  • 1

float小数点也可以进行一些格式化:

oss.setf(std::ios::fixed);				//小数定点化
oss.precision(2);						//小数点后2位
  • 1
  • 2

需要注意的是,使用小数点的格式化需要在传入小数之前来完成,否则不会生效。例如:

oss << "hello " << 3.14159265357;
oss.setf(std::ios::fixed);
oss.precision(2);

oss.setf(std::ios::fixed);
oss.precision(2);
oss << "hello " << 3.14159265357;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

相比较来说,后者会保留小数点后两位,而前者不会。


注意点

这两种方式在linux g++11版本上编译一般都不会出现问题,但是在Android NDK上编译,第一种方式可能会出现问题,因此此时建议使用第二种方式

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/252575?site
推荐阅读
相关标签
  

闽ICP备14008679号