c中的字符串向量

时间:2014-04-20 10:26:35

标签: c# c++

我在这里请求您帮助我正在处理的代码。

我正在将工具从C ++转换为C#。

我差不多完成了一切,但是......

在C ++的C ++中有代码以及该工具如何使用它:

struct Line
{
    uint16_t Magic;
    std::vector<std::string> Params;
}

这是结构,工具在交换机中使用如下:

case MAGIC_FUNCTION_BEGIN:
{
    pLine -> Params[0][8] = ' ';
    Output << pLine -> Params[0];
    pLine -> Params.erase(pLine->Params.begin());
    Output << GenParams(pLine->Params) << '\n';
    break;
}

所以,现在,问题是:

如何使用pLine - &gt; Params [0] [8]如果它是一个简单的字符串向量?

谢谢!


非常感谢您的回答。

我在C#中通过将其设置为:

来解决
char[] text = pLine.param[0].ToCharArray();
text[8] = ' ';
pLine.param[0] = text.ToString();

现在我要问一些关于这段代码的事情......

什么意思

pLine -> Params.erase(pLine->Params.begin());

如何转换为C#,比如erase和begin?

谢谢:)

2 个答案:

答案 0 :(得分:1)

std::string有一个operator[]用于访问各个元素。

pLine->Params[0][8]表示“访问pLine中第一个参数的第9个字符”。在这种情况下,它设置为空格字符“”。

答案 1 :(得分:0)

表达式Params[0]的类型是对std :: string类型的对象的引用。简而言之,Params[0]std::string类型的对象,并应用第二个下标运算符Params[0][8],您将获得位置8的字符。

您可以更清楚地分割语句

pLine -> Params[0][8] = ' ';

分为两个陈述

std::string &s = pLine -> Params[0];
s[8] = ' ';

实际上,您有两个容器,其中一个容器放在另一个容器中。