- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试根据此示例通过指定的分隔符拆分字符串:http://msdn.microsoft.com/en-us/library/ftsafwz3(v=VS.90).aspx
我的代码在 Visual C++ 2010 中编译没有错误,但是当我想运行它时,我收到此错误消息:
Unhandled exception at 0x773a15de in Test.exe: 0xC0000005: Access violation reading location 0x00000000.
这是我的代码:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <regex>
using namespace std;
vector<char *> splitString(char in[])
{
vector<char *> parts(15);
char seps[] = " ,\t\n";
char *next_token1 = NULL;
char *token1 = NULL;
token1 = strtok_s(in, seps, &next_token1);
while ((token1 != NULL))
{
if (token1 != NULL)
{
token1 = strtok_s( NULL, seps, &next_token1);
//printf( " %s\n", token1 );
parts.push_back(token1);
}
}
return parts;
}
int main(int argc, char * argv[])
{
char string1[] =
"A string\tof ,,tokens\nand some more tokens";
vector<char *> parts=splitString(string1);
cout << parts[0] <<endl;
cout << parts[1] <<endl;
return 0;
}
我尝试显示 vector 的元素似乎是非法的,但为什么呢?
vector的容量要够用
printf( " %s\n", token1 );
在 while 循环中打印出标记!
最佳答案
vector
的使用是不正确的。它由 15
构成元素然后push_back()
用于添加在初始 15 之后添加新元素的字符串。这意味着第一个 15
元素未分配(空):
std::cout << parts[0] << end; // parts[0] is null
或者:
operator[]
而不是 push_back()
(添加额外的循环终止符以保护超出 vector 末尾)(考虑改为 std::vector<std::string>
。)
只是提一下 boost::split()
可以从输入字符串生成标记列表 ( std::vector<std::string>
) 并允许指定多个分隔符。
关于c++ - 使用 strtok_s 拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12704337/
我不明白为什么我的函数会收到以下消息(在 Visual Studio 2015 中)。 0xC0000005: Access violation reading location 0x0000002C
我试图在点上拆分我的实际 key ,然后在点上拆分后提取所有字段。 我的 key 看起来像这样 - t26.example.1136580077.colox 下面是我印象中的代码,应该没问题。但不知何
我已经使用 C++ 多年了,所以请多多包涵。 我是一名 C# 开发人员,但这个 C++ 控制台应用程序坏了,我现在正在管理它。我目前正在使用 VS2010 对其进行调试。 由于保密和代码量大,我不能贴
我正在使用 strtok_s 根据用户输入从 C 字符串中提取一个值。但是,我需要能够多次调用此函数。目前,当我这样做时,它在通过 strtok_s 时遇到了问题。我相信,因为它仍然指向不同的位置,而
传递给它的每个参数到底是什么,它返回什么? 它到底比普通的 strtok 好多少? 请给我最简单和最基本的解释。 最佳答案 这在 Appendix K (bounds checking interfa
15 年后我又回到了 C++ 领域……我只是不记得为什么我们需要指针的地址。就像在这个声明中: char *next_token = NULL; char *pszMozilla = strtok_s
我正在并行解析 3 个用特定分隔符分隔的值。 token1 = strtok_s(str1, separator, &nextToken1); token2 = strtok_s(str2, sepa
我正在尝试使用 strtok_s 函数标记嵌套循环中的两个字符串,但是我无法解析由 delimeter(;) 分隔的完整字符串,其代码是 char* string1Bigrams = "he;el;l
我正在尝试使用 strtok_s() 函数获取一个标记化的数组,但我还想包含标记化数组的分隔符。如果它是斜杠“/”,我希望数组在任何使用斜杠“/”字符创建的标记处都具有斜杠。 我编写了一个函数,它接受
我正在尝试根据此示例通过指定的分隔符拆分字符串:http://msdn.microsoft.com/en-us/library/ftsafwz3(v=VS.90).aspx 我的代码在 Visual
我是 C++ 的初学者,我正在尝试通过使用带有 strtok_s 的标记将文本从文本文件放入 vector 中。 我只能将一个文本推回并显示在 vector 中,我确信我的编码存在一些问题。 代码如下
似乎已经修改了我想拆分指定标记的原始字符串。 如果无法从内存中复制,它如何返回一个子字符串? 我也在寻找接受 const char* 或不修改原始字符串的替代方案。 或者仅const_cast 字符串
(大家好)我的strtok_s有一些问题。我写了这段代码(x64)。 #include #include #include BOOL TestMD5(CONST
strtok_s函数在vc8中有,vc7中没有。那么,在 vc7 中执行相当于 strtok_s 的函数(或代码)是什么? 最佳答案 看看this MSDN page . 据我所知,安全性增强 a)
我将 strtok_s 与分配的字符串一起使用。 上面的代码处理异常: char *string1 = NULL; string1 = (char*)LocalAlloc(LPTR, 100 * si
我正在尝试使用 C11 函数 strtok_s ,应该在 中定义,但是当我尝试使用它时,clang 给我一个链接错误。编译这个程序: #include int main() { char
我正在尝试从由空格 ("") 分隔的字符串中获取 token 。但是当字符串是 char * 类型时,下面的代码会导致应用程序崩溃。 #include #include int main(){ c
我有以下程序: #include #include #include int main(int argc, char *argv[]) { char *tp = NULL, *cp = N
我在这里的搜索得到了很多结果,但没有一个非常适合我,以便我可以找到问题的解决方案。 我正在使用 Visual Studio 2013 用 C 语言创建 Mathcad UserEFI DLL。我不想使
我是一名优秀的程序员,十分优秀!