【发布时间】:2015-05-29 10:57:39
【问题描述】:
我在 C# 中有一个函数,它必须将字符串数组的输出参数传递给 C++
这些字符串数组需要拆分成单独的字符串。
C#:-
void calculate(string[] data)
{
data = new string[5];
data [0] = keycol[0].ToString() + "|"+ valuecol[0].ToString()+ "|"+Column_name[0];
data [1] = keycol[1].ToString() + "|" + valuecol[1].ToString()+ "|"+Column_name[1];
data [2] = keycol[2].ToString() + "|" + valuecol[2].ToString()+ "|"+Column_name[2];
data [3] = keycol[3].ToString() + "|" + valuecol[3].ToString() + "|" + Column_name[3];
}
C++:
#include <string>
#include <vector>
void calculate(char *data[5])
{
vector<string> v;
string s = data[0];
split(s, '|', v);
}
void split(const string& s, char c,
vector<string>& v) {
string::size_type i = 0;
string::size_type j = s.find(c);
while (j != string::npos) {
v.push_back(s.substr(i, j-i));
i = ++j;
j = s.find(c, j);
if (j == string::npos)
v.push_back(s.substr(i, s.length()));
}
我从 C# 得到的数据是这样的: cmb1|2|col1,col3
cmb2|1|col2
cmb3|1|col4
这已正确存储在 C# 中的数据数组中。 当我将它发送到 C++ 时,我遇到了这个问题。 当我拆分存储在数据中的字符串时,我只得到一个字符。
我需要这样的 C++ 结果:
string c1 = cmb1;
string c2 = 2;
string c3 = col1;
string c4 = col2;
string c5= cmb2;
string c6 =1;
string c7 =col2;
【问题讨论】:
-
对于这样简单的事情,您可能想尝试使用
std::istringstream和std::getline。 -
另外,你确定关于
calculate的论点吗?因为现在你说数据是指向char的指针数组,而不是字符串数组(指向char或char *data[]的指针数组)。 -
为什么会有反对票??