我正在尝试根据此示例通过指定的分隔符拆分字符串:http: //msdn.microsoft.com/en-us/library/ftsafwz3 (v=VS.90).aspx
我的代码在 Visual C++ 2010 中编译没有错误,但是当我想运行它时,我收到以下错误消息:
Test.exe 中 0x773a15de 处的未处理异常:0xC0000005:访问冲突读取位置 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;
}
我尝试显示向量的元素似乎是非法的,但为什么呢?
载体的容量应该足够,并且
printf("%s\n", token1);
在while循环中打印出令牌!