关于String 转换到 unsigned short
转换 string 关于 short unsigned
2023-09-27 14:27:55 时间
这才知道,原来c_str 只能够返回const char*,没有办法,我查询还有没有别的转换的方法,很遗憾,都没有。
最近被一个小问题给弄晕呼了,没有办法人太笨了,基础又不好……
我最近要把一个String的数值转换为 unsigned short int类型,Socket里面的sockaddr_in的sin_port使的就这。
开始尝试了使用标准库istringstream和ostringstream来解决,也就是:
std::istringstream str(strPort);
unsigned short nPort;
str strPort;
str nPort;
但是很遗憾,转换的数值是错误的。
后来看到了可以用:
nPort = (char*)strPort.c_str();
转换到 char*,我就类似的使用了:
nPort = (unsigned short)strPort.c_str();
结果数值还是错误的!
后来我查了一下CPPReference:
c_str
Syntax:
#include string
const char* c_str();
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
The function c_str() returns a const pointer to a regular C string, identical to the current string. The returned string is null-terminated.
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
Note that since the returned pointer is of type (C/C++ Keywords) const, the character data that c_str() returns cannot be modified.
原文地址:http://www.cppreference.com/cppstring/c_str.html
这才知道,原来c_str 只能够返回const char*,
没有办法,我查询还有没有别的转换的方法,很遗憾,都没有。
最后我是采用这个办法解决的:
nPort = atoi((char*)strPort.c_str());
我写了一个测试用的小东西:
#include iostream
//#include sstream.h
#include string
//#include winsock2.h
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
using namespace std;
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
void test()
{
//ostringstream oss;
//oss.str("abc");
string strIP = "127.0.0.1";
string strPort = "2000";
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
char* szRemoteAddr = "";
unsigned short nPort ;
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
szRemoteAddr = (char*)strIP.c_str();
//nPort = atoi((char*)strPort.c_str());
nPort = atoi((char*)strPort.c_str());
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
//cout strIP endl;
//cout szRemoteAddr endl;
cout "This is old one:" strPort endl;
cout "This is new one:" nPort endl;
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
int main(int argc, char* argv[])
{
test();
return 0;
}
最后验证出来是正确的!
郁闷啊,这样一个小问题都把我搞得要死,唉……
知识分享之Golang——常用的类型转换int、string、float互相转换 知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。 知识分享系列目前包含Java、Golang、Linux、Docker等等。
最近被一个小问题给弄晕呼了,没有办法人太笨了,基础又不好……
我最近要把一个String的数值转换为 unsigned short int类型,Socket里面的sockaddr_in的sin_port使的就这。
开始尝试了使用标准库istringstream和ostringstream来解决,也就是:
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
后来看到了可以用:
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
后来我查了一下CPPReference:
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
这才知道,原来c_str 只能够返回const char*,
没有办法,我查询还有没有别的转换的方法,很遗憾,都没有。
最后我是采用这个办法解决的:
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
我写了一个测试用的小东西:
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedBlockEnd.gif](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![None.gif](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedBlockEnd.gif](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
郁闷啊,这样一个小问题都把我搞得要死,唉……
知识分享之Golang——常用的类型转换int、string、float互相转换 知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。 知识分享系列目前包含Java、Golang、Linux、Docker等等。
相关文章
- C++处理char*,char[],string三种类型间的转换
- )C# Enum,Int,String的互相转换 枚举转换
- python批量提取word文档中的图片(含图片格式转换和GUI)
- 思路转换的失败
- string与wstring之间的转换
- c#中字节数组byte[]、图片image、流stream,字符串string、内存流MemoryStream、文件file,之间的转换
- OpenCV中的cv::String和CString互相转换
- Asp.Net Core 下 Newtonsoft.Json 转换字符串 null 替换成string.Empty(转)
- 将Json数据转换为ADO.NET DataSet对象
- c语言中int和char之间的转换实例解析
- java中int,char,string三种类型的相互转换
- 视频转换
- H3C ospf与nat转换
- LINQ to Entities 不识别方法“System.String ToString(System.String)”,因此该方法无法转换为存储表达式。
- Python:不同进制的转换整理
- 形态学转换