C/C++ std::string 切词
用了三种方法...
#if 0
void StringTokenize(const std::string& strSrc, const std::string& strDelimit, std::vector<std::string>& vecSub)
{
if (strSrc.empty() || strDelimit.empty())
{
throw "tokenize: empty string\n";
}
vecSub.clear();
std::size_t nCurPos = 0;
std::size_t nNextPos = 0;
while ((nNextPos = strSrc.find_first_of(strDelimit, nCurPos)) != std::string::npos)
{
if (nNextPos - nCurPos > 0)
{
vecSub.push_back(strSrc.substr(nCurPos, nNextPos - nCurPos));
}
nCurPos = nNextPos + 1;
}
// Add the last one
std::string strLast = strSrc.substr(nCurPos);
if (!strLast.empty())
vecSub.push_back(strSrc.substr(nCurPos));
}
void StringToken(char *strToken, const char *strDelimit, std::vector<std::string>& vecSub)
{
assert(strToken && strDelimit && "Token, Delimit can not be NULL");
vecSub.clear();
char *pToken = strToken;
char *pNextToken = NULL;
pToken = strtok_s(pToken, strDelimit, &pNextToken);
while (pToken != NULL)
{
vecSub.push_back(pToken);
pToken = strtok_s(NULL, strDelimit, &pNextToken);
}
}
#endif
void StringTokenize(const std::string& strSrc, const std::string& strDelimit, std::vector<std::string>& vecSub)
{
if (strSrc.empty() || strDelimit.empty())
{
throw "tokenize: empty string\n";
}
vecSub.clear();
std::size_t nCurPos = 0;
std::size_t nNextPos = 0;
while ((nCurPos = strSrc.find_first_not_of(strDelimit, nNextPos)) != std::string::npos)
{
nNex
相关文档:
在C++中,可以使用多种方法对文件进行操作,如基于C的文件操作、基于C++的文件操作等等;
◆基于C的文件操作
在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。
一.流式文件操作
这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:
typedef struct {
i ......
C/C++: 十六进制转10进制源码
收藏
view plain
copy to clipboard
print
?
int
hex_char_value(
char
c)
{
if
(c >=
'0'
&& ......
1.引言
C++语言的创建初衷是“a better
C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程
式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++ ......
C/C++函数调用约定和函数名称修饰规则探讨
作者:星轨(oRbIt)
使用C/C++语言开发软件的程序员经常碰到这样的问题:有时候是程序编译没有问题,但是链接的时候总是报告函数不存在(经典的LNK
2001错误),有时候是程序编译和链接都没有错误,但是只要调用库中的函数就会出现堆栈异常。这些现象通常是出现在C和C ......
在做ACM题时,经常都会遇到一些比较大的整数。而常用的内置整数类型常常显得太小了:其中long 和 int
范围是[-2^31,2^31),即-2147483648~2147483647。而unsigned范围是[0,2^32),即
0~4294967295。也就是说,常规的32位整数只能够处理40亿以下的数。
那遇到比40亿要大的数怎么办呢?这时就要用到C++的64位扩展 ......