0

我应该如何运行 for 循环从我的字符串中一次选择两个字符?

int main{
string data;
for (i = 0; i <= data.size(); i+=2)
d = data[i] + data[i+1];
cout << "the list of two characters at a time is" << d;
}

//我想选择划分我的字符串(数据),例如:“你好,你好吗”一次分成两个字符的列表(其中空格也应该算作一个字符)并列出如下:

cout should give:

he

ll 

o(space)

ho

w(space)

ar

e(space)

yo

u //the last one is appended with 8 zeros with u to make a complete pair

我不明白如何在 C++ 中到达字符串数据的第 i 个位置。

4

3 回答 3

3

你怎么用substr()

for (int i=0; i<data.length(); i+=2) {
    if(i+2 < data.length()){              //prevent it from throwing out_of_range exception
        d = data.substr(i,i+2);
        cout << d << endl;
    }
}
于 2013-11-07T17:52:19.257 回答
0

除了 2 个问题外,您几乎做对了:

  1. 你的循环条件是错误的,可能是这样的:

    for (i = 0; i + 1 < data.size(); i+=2)

    否则您将尝试访问字符串末尾的数据。在这种情况下,如果字符串长度为奇数,您将跳过 1 个符号。如果你需要处理它,你的循环应该不同。

  2. 您将 2 个字符添加为数字,但您应该将其设为字符串:

    d = std::string( data[i] ) + data[i+1];

于 2013-11-07T17:59:20.937 回答
0
std::cout << "the list of two characters at a time is:\n";
for (i = 0; i < data.size(); ++i) {
    if (data[i] == ' ')
        std::cout << "(space)";
    else
        std::cout << data[i];
    if (i % 2 != 0)
        std::cout << '\n';
}
于 2013-11-07T17:59:30.663 回答