如何将数字的QString转换为int数组?
How can I convert a QString of numbers to an array of int?
我有一个包含一系列数字的QString
,例如
QString path = "11100332001 234 554 9394";
我想遍历可变长度字符串
for (int i=0; i<path.length(); i++){
}
,并且能够单独访问每个数字作为int
。
我还没能做到这一点。问题:如何将数字的QString
转换为int
数组?
我知道我可以使用path.toInt()
将QString
转换为int
,但这对我没有帮助。
当尝试将其转换为char时,我得到一个错误:cannot convert 'const QChar to char'
.
for (int i=0; i<path.length(); i++){
char c = path.at(i);
int j = atoi(&c);
//player->movePlayer(direction);
}
您可以使用split
来获取由您想要的分隔符分隔的子字符串数组在本例中它是一个空格,下面是一个示例:
QString str("123 457 89");
QStringList list = str.split(" ",QString::SkipEmptyParts);
foreach(QString num, list)
cout << num.toInt() << endl;
您可以使用[]运算符获得每个字符(QChar),并使用digitValue()方法对它们进行处理以获得整数
使用QTextStream:
QString str = "123 234 23123 432";
QTextStream stream(&str);
QList<int> array;
while (!stream.atEnd()) {
int number;
stream >> number;
array.append(number);
}
我已经使用了Antoyo自己的答案,但是我今天遇到了一个问题。digitValue()与使用atoi比较C中的字符不一样,就像Thomas试图做的那样。所以当Thomas试图这样做的时候:
for (int i=0; i<path.length(); i++){
char c = path.at(i);
int j = atoi(&c);
//player->movePlayer(direction);
}
与digitValue(),它将变成这样:
for (int i=0; i<path.length(); i++){
int j = path.at(i).digitValue();
//player->movePlayer(direction);
}
但是,如果字符串中有字母,则不会得到预期的结果。例如,在C语言中,如果字符串是字母和数字的混合,那么您使用的任何字符都将返回0来代替字母。然而,对于字母,digitValue()不会返回0。如果您担心字符串中的字母结束,那么首先检查isDigit()可能是一个好主意,最终结果看起来像这样:
int j = 0;
for (int i=0; i<path.length(); i++){
if (path.at(i).isDigit())
j = path.at(i).digitValue();
else
j = 0;
//player->movePlayer(direction);
}
这可能不是OP关心的问题,但由于这是在QT中从字符串中获取数字的Google结果之一,它可能会帮助其他人,特别是如果你试图让QT应用程序的行为与设备上的一些嵌入式C代码相同。
相关文章:
- 按字符值访问int数组
- 将 int 数组转换为 std::vector<int*>
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 整数区间(或 int 数组)中每个数字的出现次数
- Int 数组到C++容器
- C++ 未初始化的本地(非全局)int 数组中的元素类型到底是什么?
- 如何检测将文本文件读入 int 数组的新行
- C++快速将 int 数组内容转储到文本文件中
- <string> 如何在使用 SWIG 时将 int 数组和 List 作为参数传递给 C# C++
- 如何制作不允许重复值的 C++ int 数组循环?
- 如何将逗号分隔的文件读取为 2D int 数组?
- int 数组,但索引是字符?
- 使用可变参数函数将整数和/或整数数组放入单个 int 数组中
- 将 int 数组转换为带有小数C++的双精度数组
- 将双精度值分配给 int 数组时的类型转换
- 已编辑 我如何将其拆分为 char 和 int 数组
- 从 C++ 中的 int ** 数组访问元素
- C++程序无法分配 int 数组?
- 我正在编写一个代码来将 int 数组存储在文件中,然后用 c++ 检索它,但是检索第一项是假值,我该如何解决这个问题?
- 如何通过头文件中的函数初始化 const int 数组?