【发布时间】:2014-11-14 09:33:07
【问题描述】:
这是程序:
#include <QPoint>
#include <string.h>
#include <QList>
using namespace std;
#include <iostream>
int main(int argc, char *argv[])
{
int y = 14;
char * str = new char [y];
str = "23,211,23,211";
char *pch;
std::cout << "\nSplitting string into tokens: \n" << str;
pch = strtok (str,",");
QList <int> p;
while (pch != NULL)
{
std::cout << "\npch:" << pch;
p.push_back (atoi (pch));
pch = strtok (NULL, ",");
}
std::cout << "Length of p " << p.length() << std::endl;
QPoint first;
first.setX (p[0]);
first.setY (p[1]);
QPoint second;
second.setX (p[2]);
second.setY (p[3]);
return 0;
}
输出是:
我错过了什么?
【问题讨论】:
-
你为什么在 C++ 中使用
strtok? -
我找不到任何简单的函数来基于 c++ 中的标记返回字符串部分。 @PiotrS。
-
char * str = new char [y]; str = "23,211,23,211"这将是两短行的内存泄漏。随后对只读字符串文字的修改只会加剧混乱。 -
你可以尝试使用
QString::split来做。像这样:QStringList list = str.split(","); -
@WhozCraig 谢谢,您能否详细说明一下应该如何纠正它?