我有这个CString: “0 2 8 27 29 32 35 48 52 55 58 62 72” 我需要将每个数字放在一个单独的数组元素中。 有人可以帮我这个吗? -ThanX
答案 0 :(得分:0)
我假设您希望这些数字为整数数组。 std :: vector可能更好用。
std::vector<int> oResult;
CString oMyStr = _T("0 2 8 27 29 32 35 48 52 55 58 62 72");
int iIndex = 0;
CString oToken = oMyStr.Tokenize(_T(" "), iIndex); // Tokenize with space
while ( !oToken.IsEmpty() )
{
try
{
int iNbr = atoi( oToken );
oResult.push_back(iNbr);
}
catch (...) { } // This is bad code, but I'm just lazy.
oToken = oMyStr.Tokenize(_T(" "), iIndex); // Tokenize with space
}
如果您确实需要数组,可以使用
转换矢量int* pPointerToArraysFirstElement = &oResult[0];
但是,如果向量为空,则可能会崩溃。
答案 1 :(得分:0)
使用以下代码将各个元素分隔为字符串向量,其中每个元素都作为单独的元素放置。
#include <sstream>
#include <vector>
#include <iostream>
using namespace std;
vector<string> &split(const string &s, char delim, vector<string> &elems) {
stringstream ss(s);
string item;
while (getline(ss, item, delim)) {
elems.push_back(item);
}
return elems;
}
vector<string> split(const string &s, char delim) {
vector<string> elems;
split(s, delim, elems);
return elems;
}
int main()
{
string s = "0 2 8 27 29 32 35 48 52 55 58 62 72";
vector<string> elemsVec = split(s, ' ');
vector<string>::iterator it;
for(it = elemsVec.begin(); it != elemsVec.end(); ++it)
cout << *it << " ";
return 0;
}
输出: 0 2 8 27 29 32 35 48 52 55 58 62 72