C++ 如何一次从字符串中选取两个字符?到达字符串的第i个位置?
如何运行for循环从字符串中一次选取两个字符C++ 如何一次从字符串中选取两个字符?到达字符串的第i个位置?,c++,string,char,C++,String,Char,如何运行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; } 我不明白如何在C++中实现字符串数据的第i个位置。 你如何使用子串(< /代码>?< /p>) for(inti=0;i您如何使用subs
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;
}
<>我不明白如何在C++中实现字符串数据的第i个位置。 你如何使用<代码>子串(< /代码>?< /p>)
for(inti=0;i您如何使用substr()
for(inti=0;i您如何使用substr()
for(inti=0;i您如何使用substr()
for(int i=0;i除了两个问题外,您几乎完全正确:
如果循环条件错误,可能是这样的:
for(i=0;i+1
否则,您将尝试访问字符串末尾后面的数据。在这种情况下,若字符串长度为奇数,您将跳过1个符号。若您需要处理该值,则循环应不同
添加2个字符作为数字,但应将其设置为字符串:
d=std::string(数据[i])+数据[i+1];
除了两个问题外,您几乎完全正确:
如果循环条件错误,可能是这样的:
for(i=0;i+1
否则,您将尝试访问字符串末尾后面的数据。在这种情况下,若字符串长度为奇数,您将跳过1个符号。若您需要处理该值,则循环应不同
添加2个字符作为数字,但应将其设置为字符串:
d=std::string(数据[i])+数据[i+1];
除了两个问题外,您几乎完全正确:
如果循环条件错误,可能是这样的:
for(i=0;i+1
否则,您将尝试访问字符串末尾后面的数据。在这种情况下,若字符串长度为奇数,您将跳过1个符号。若您需要处理该值,则循环应不同
添加2个字符作为数字,但应将其设置为字符串:
d=std::string(数据[i])+数据[i+1];
除了两个问题外,您几乎完全正确:
如果循环条件错误,可能是这样的:
for(i=0;i+1
否则,您将尝试访问字符串末尾后面的数据。在这种情况下,若字符串长度为奇数,您将跳过1个符号。若您需要处理该值,则循环应不同
添加2个字符作为数字,但应将其设置为字符串:
d=std::string(数据[i])+数据[i+1];
std::coutstd::coutstd::coutstd::cout甚至没有想到那一点,nice one甚至没有想到那一点,nice one甚至没有想到那一点,nice one只是为了避免一些崩溃…我建议assert(data.size()%2==0);
或循环前的某种检查。否则,如果字母数为奇数,则会出现一个off-by-one错误,并可能导致崩溃。如果字符串大小为奇数,则应在字符串中附加一个“\x00”,以强制其大小为偶数?正是!这就是我指定的:)最后8个字节(或奇数字符)应该加上零。为了避免一些崩溃…我建议assert(data.size()%2==0);
或在循环之前进行某种检查。否则,如果有奇数个字母,您将出现一个off-by-one错误,并且可能会崩溃。如果它的大小奇数,您应该只添加一个“\x00”对于字符串,要强制其大小为偶数?没错!这就是我指定的:)最后8个字节(或奇数字符)应附加零。为了避免一些崩溃…我建议assert(data.size()%2==0);
或循环前的某种检查。否则,如果字母数为奇数,则会出现一个off-by-one错误,并可能导致崩溃。如果字符串大小为奇数,则应在字符串中附加一个“\x00”,以强制其大小为偶数?正是!这就是我指定的:)最后8个字节(或奇数字符)应该加上零。为了避免一些崩溃…我建议assert(data.size()%2==0);
或在循环之前进行某种检查。否则,如果有奇数个字母,您将出现一个off-by-one错误,并且可能会崩溃。如果它的大小奇数,您应该只添加一个“\x00”对于字符串,强制其大小为偶数?没错!这就是我指定的:)最后8个字节(或奇数字符)应追加零。我得到一个错误:当我使用您在2中指定的内容时,从“char”到“const char*”的转换无效。我得到一个错误:当我使用您在2中指定的内容时,从“char”到“const char*”的转换无效。我得到一个错误:当我使用您在2中指定的内容时,从“char”到“const char*”的转换无效。我得到一个错误错误:当我使用您在2中指定的内容时,从“char”到“const char*”的转换无效。
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
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;
}
}
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';
}